| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 28 收到离婚信息 #tagGCMarryBreakInfo
|
| | | # B3 19 魅力贡献榜 #tagGCCharmOfferBillboardDataList
|
| | |
|
| | | class tagGCMarryBreakInfo(Structure):
|
| | | Head = tagHead()
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | class tagGCCharmOfferBillboardData(Structure):
|
| | | OrderIndex = 0 #(DWORD OrderIndex)//名次索引,0代表第一名
|
| | | PlayerID = 0 #(DWORD PlayerID)// 玩家ID - 贡献者
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PlayerName = "" #(String PlayerName)
|
| | | CharmValue = 0 #(DWORD CharmValue)//贡献魅力值
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.OrderIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.CharmValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.OrderIndex = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.CharmValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.OrderIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteDWORD(data, self.CharmValue)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | OrderIndex:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | PlayerName:%s,
|
| | | CharmValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.OrderIndex,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.PlayerName,
|
| | | self.CharmValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCharmOfferBillboardDataList(Structure):
|
| | | Head = tagHead()
|
| | | PlayerID = 0 #(DWORD PlayerID)// 魅力玩家ID
|
| | | QueryType = 0 #(BYTE QueryType)// 查看类型: 1-总榜,2-周榜,3-日榜
|
| | | DataCount = 0 #(BYTE DataCount)
|
| | | OfferBillboardDataList = list() #(vector<tagGCCharmOfferBillboardData> OfferBillboardDataList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x28
|
| | | self.Head.SubCmd = 0x19
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.DataCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DataCount):
|
| | | temOfferBillboardDataList = tagGCCharmOfferBillboardData()
|
| | | _pos = temOfferBillboardDataList.ReadData(_lpData, _pos)
|
| | | self.OfferBillboardDataList.append(temOfferBillboardDataList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x28
|
| | | self.Head.SubCmd = 0x19
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.QueryType = 0
|
| | | self.DataCount = 0
|
| | | self.OfferBillboardDataList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 1
|
| | | for i in range(self.DataCount):
|
| | | length += self.OfferBillboardDataList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.QueryType)
|
| | | data = CommFunc.WriteBYTE(data, self.DataCount)
|
| | | for i in range(self.DataCount):
|
| | | data = CommFunc.WriteString(data, self.OfferBillboardDataList[i].GetLength(), self.OfferBillboardDataList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | PlayerName:%s
|
| | | QueryType:%d,
|
| | | DataCount:%d,
|
| | | OfferBillboardDataList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.PlayerName
|
| | | self.QueryType,
|
| | | self.DataCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMarryBreakInfo=tagGCMarryBreakInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakInfo.Head.Cmd,m_NAtagGCMarryBreakInfo.Head.SubCmd))] = m_NAtagGCMarryBreakInfo
|
| | | m_NAtagGCCharmOfferBillboardDataList=tagGCCharmOfferBillboardDataList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCharmOfferBillboardDataList.Head.Cmd,m_NAtagGCCharmOfferBillboardDataList.Head.SubCmd))] = m_NAtagGCCharmOfferBillboardDataList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 26 伴侣信息 #tagGCCoupleInfo
|
| | |
|
| | | class tagGCCoupleInfo(Structure):
|
| | | Head = tagHead()
|
| | | CoupleID = 0 #(DWORD CoupleID)// 伴侣玩家ID,一定是好友,社交信息从好友系统中获取
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | CoupleName = "" #(String CoupleName)
|
| | | NewMarryTime = 0 #(DWORD NewMarryTime)// 新婚时间戳, 秒,计算结婚天数按该时间计算
|
| | | MarryTime = 0 #(DWORD MarryTime)// 最近一次提亲成功时间戳, 秒,计算可离婚时间按该时间计算
|
| | | BridePriceState = 0 #(DWORD BridePriceState)// 聘礼状态,按位存储已购买次数,如205代表ID1买了5次,ID2买了0次,ID3买了2次,最高9次
|
| | | BreakRequestID = 0 #(DWORD BreakRequestID)// 当前请求中的和离时间戳 - 请求方ID,0代表没人发起请求
|
| | | BreakRequestTime = 0 #(DWORD BreakRequestTime)// 当前请求中的和离时间戳, 秒,用于计算和离回应有效期
|
| | | PlayerBreakRequestTime = 0 #(DWORD PlayerBreakRequestTime)// 玩家最近一次和离请求时间戳, 秒,用于计算自身的请求和离CD
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x26
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.CoupleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CoupleName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.NewMarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BridePriceState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BreakRequestID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerBreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x26
|
| | | self.CoupleID = 0
|
| | | self.NameLen = 0
|
| | | self.CoupleName = ""
|
| | | self.NewMarryTime = 0
|
| | | self.MarryTime = 0
|
| | | self.BridePriceState = 0
|
| | | self.BreakRequestID = 0
|
| | | self.BreakRequestTime = 0
|
| | | self.PlayerBreakRequestTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.CoupleName)
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.CoupleID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.CoupleName)
|
| | | data = CommFunc.WriteDWORD(data, self.NewMarryTime)
|
| | | data = CommFunc.WriteDWORD(data, self.MarryTime)
|
| | | data = CommFunc.WriteDWORD(data, self.BridePriceState)
|
| | | data = CommFunc.WriteDWORD(data, self.BreakRequestID)
|
| | | data = CommFunc.WriteDWORD(data, self.BreakRequestTime)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerBreakRequestTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | CoupleID:%d,
|
| | | NameLen:%d,
|
| | | CoupleName:%s,
|
| | | NewMarryTime:%d,
|
| | | MarryTime:%d,
|
| | | BridePriceState:%d,
|
| | | BreakRequestID:%d,
|
| | | BreakRequestTime:%d,
|
| | | PlayerBreakRequestTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.CoupleID,
|
| | | self.NameLen,
|
| | | self.CoupleName,
|
| | | self.NewMarryTime,
|
| | | self.MarryTime,
|
| | | self.BridePriceState,
|
| | | self.BreakRequestID,
|
| | | self.BreakRequestTime,
|
| | | self.PlayerBreakRequestTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCoupleInfo=tagGCCoupleInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCoupleInfo.Head.Cmd,m_NAtagGCCoupleInfo.Head.SubCmd))] = m_NAtagGCCoupleInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 20 送花成功通知 #tagGCSendFlowersOK
|
| | | # B3 25 玩家魅力值信息 #tagGCPlayerCharmValueInfo
|
| | |
|
| | | class tagGCSendFlowersOK(Structure):
|
| | | Head = tagHead()
|
| | | NameLen = 0 #(BYTE NameLen)// 赠送方玩家名
|
| | | Name = "" #(String Name)//size = SrcNameLen
|
| | | class tagGCPlayerCharmValueInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CharmValueTotal", c_int), #当前魅力值 - 总
|
| | | ("CharmValueWeek", c_int), #当前魅力值 - 周
|
| | | ("CharmValueDay", c_int), #当前魅力值 - 日
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | self.SubCmd = 0x25
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x25
|
| | | self.CharmValueTotal = 0
|
| | | self.CharmValueWeek = 0
|
| | | self.CharmValueDay = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCPlayerCharmValueInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 25 玩家魅力值信息 //tagGCPlayerCharmValueInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CharmValueTotal:%d,
|
| | | CharmValueWeek:%d,
|
| | | CharmValueDay:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CharmValueTotal,
|
| | | self.CharmValueWeek,
|
| | | self.CharmValueDay
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCPlayerCharmValueInfo=tagGCPlayerCharmValueInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerCharmValueInfo.Cmd,m_NAtagGCPlayerCharmValueInfo.SubCmd))] = m_NAtagGCPlayerCharmValueInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 20 送礼物成功通知 #tagGCSendGiftsOKList
|
| | |
|
| | | class tagGCSendGiftsOK(Structure):
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)// 赠送方玩家名
|
| | | PlayerID = 0 #(DWORD PlayerID)// 赠送方玩家ID
|
| | | FlowerCount = 0 #(DWORD FlowerCount)// 赠送花数量
|
| | | GiftNum = 0 #(WORD GiftNum)// 赠送礼物编号
|
| | | GiftCount = 0 #(DWORD GiftCount)// 赠送礼物数量
|
| | | SendTime = 0 #(DWORD SendTime)// 赠送时间戳
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GiftNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GiftCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SendTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.PlayerID = 0
|
| | | self.GiftNum = 0
|
| | | self.GiftCount = 0
|
| | | self.SendTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteWORD(data, self.GiftNum)
|
| | | data = CommFunc.WriteDWORD(data, self.GiftCount)
|
| | | data = CommFunc.WriteDWORD(data, self.SendTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | PlayerID:%d,
|
| | | GiftNum:%d,
|
| | | GiftCount:%d,
|
| | | SendTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.PlayerID,
|
| | | self.GiftNum,
|
| | | self.GiftCount,
|
| | | self.SendTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCSendGiftsOKList(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | SendGiftsOKList = list() #(vector<tagGCSendGiftsOK> SendGiftsOKList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FlowerCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temSendGiftsOKList = tagGCSendGiftsOK()
|
| | | _pos = temSendGiftsOKList.ReadData(_lpData, _pos)
|
| | | self.SendGiftsOKList.append(temSendGiftsOKList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x20
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.PlayerID = 0
|
| | | self.FlowerCount = 0
|
| | | self.Count = 0
|
| | | self.SendGiftsOKList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.SendGiftsOKList[i].GetLength()
|
| | |
|
| | | 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.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteDWORD(data, self.FlowerCount)
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.SendGiftsOKList[i].GetLength(), self.SendGiftsOKList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | PlayerID:%d,
|
| | | FlowerCount:%d
|
| | | Count:%d,
|
| | | SendGiftsOKList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.PlayerID,
|
| | | self.FlowerCount
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCSendFlowersOK=tagGCSendFlowersOK()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSendFlowersOK.Head.Cmd,m_NAtagGCSendFlowersOK.Head.SubCmd))] = m_NAtagGCSendFlowersOK
|
| | | m_NAtagGCSendGiftsOKList=tagGCSendGiftsOKList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSendGiftsOKList.Head.Cmd,m_NAtagGCSendGiftsOKList.Head.SubCmd))] = m_NAtagGCSendGiftsOKList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 14 社交人群伴侣信息 #tagGCSocialCouples
|
| | |
|
| | | class tagGCSocialCouple(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("PlayerID", c_int), |
| | | ("CoupleID", 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.PlayerID = 0
|
| | | self.CoupleID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCSocialCouple)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 14 社交人群伴侣信息 //tagGCSocialCouples:
|
| | | PlayerID:%d,
|
| | | CoupleID:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.CoupleID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCSocialCouples(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | Player = list() #(vector<tagGCSocialCouple> Player)//size = Count
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x14
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temPlayer = tagGCSocialCouple()
|
| | | _pos = temPlayer.ReadData(_lpData, _pos)
|
| | | self.Player.append(temPlayer)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x14
|
| | | self.Count = 0
|
| | | self.Player = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.Player[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.Player[i].GetLength(), self.Player[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | Player:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCSocialCouples=tagGCSocialCouples()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSocialCouples.Head.Cmd,m_NAtagGCSocialCouples.Head.SubCmd))] = m_NAtagGCSocialCouples
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | LV = 0 #(WORD LV)//等级
|
| | | RealmLV = 0 #(WORD RealmLV)//境界
|
| | | OnlineType = 0 #(BYTE OnlineType)//0不在线 1在线 2脱机在线
|
| | | CoupleID = 0 #(DWORD CoupleID)//伴侣ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CoupleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.OnlineType = 0
|
| | | self.CoupleID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteWORD(data, self.RealmLV)
|
| | | data = CommFunc.WriteBYTE(data, self.OnlineType)
|
| | | data = CommFunc.WriteDWORD(data, self.CoupleID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | OnlineType:%d,
|
| | | CoupleID:%d
|
| | | OnlineType:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | |
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.OnlineType,
|
| | | self.CoupleID
|
| | | self.OnlineType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("PlayerID", c_int),
|
| | | ("SortValue", c_int), |
| | | ("Intimacy", c_int), #亲密度 - 好友组才有值
|
| | | ("SortValue", c_int), # 亲密组时为亲密度
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.SortValue = 0
|
| | | self.Intimacy = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''//B3 08 通知玩家分组信息 //tagGCGroupPlayers:
|
| | | PlayerID:%d,
|
| | | SortValue:%d,
|
| | | Intimacy:%d
|
| | | SortValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.SortValue,
|
| | | self.Intimacy
|
| | | self.SortValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCGroupPlayers(Structure):
|
| | | Head = tagHead()
|
| | | GroupType = 0 #(BYTE GroupType)// 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
|
| | | GroupType = 0 #(BYTE GroupType)// 分组 1 最近联系人 2 好友 3 仇人 4 黑名单 5亲密组
|
| | | Count = 0 #(WORD Count)
|
| | | Players = list() #(vector<tagGCGroupPlayer> Players)//size = Count
|
| | | data = None
|
| | |
| | |
|
| | | m_NAtagGCCrossRealmPKStartMatch=tagGCCrossRealmPKStartMatch()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKStartMatch.Cmd,m_NAtagGCCrossRealmPKStartMatch.SubCmd))] = m_NAtagGCCrossRealmPKStartMatch
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 25 魅力值信息 #tagMCCharmInfo
|
| | |
|
| | | class tagMCCharmInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CharmTotal", c_int), # 魅力值 - 总
|
| | | ("CharmToday", c_int), # 魅力值 - 今日
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | self.SubCmd = 0x25
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x25
|
| | | self.CharmTotal = 0
|
| | | self.CharmToday = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCharmInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 25 魅力值信息 //tagMCCharmInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CharmTotal:%d,
|
| | | CharmToday:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CharmTotal,
|
| | | self.CharmToday
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCharmInfo=tagMCCharmInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCharmInfo.Cmd,m_NAtagMCCharmInfo.SubCmd))] = m_NAtagMCCharmInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 26 伴侣信息 #tagMCCoupleInfo
|
| | |
|
| | | class tagMCCoupleInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CoupleID", c_int), # 伴侣玩家ID,一定是好友,社交信息从好友系统中获取
|
| | | ("NewMarryTime", c_int), # 新婚时间戳, 秒,计算结婚天数按该时间计算
|
| | | ("MarryTime", c_int), # 最近一次提亲成功时间戳, 秒,计算可离婚时间按该时间计算
|
| | | ("BridePriceState", c_int), # 聘礼状态,按二进制位存储是否已购买
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | self.SubCmd = 0x26
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x26
|
| | | self.CoupleID = 0
|
| | | self.NewMarryTime = 0
|
| | | self.MarryTime = 0
|
| | | self.BridePriceState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCoupleInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 26 伴侣信息 //tagMCCoupleInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CoupleID:%d,
|
| | | NewMarryTime:%d,
|
| | | MarryTime:%d,
|
| | | BridePriceState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CoupleID,
|
| | | self.NewMarryTime,
|
| | | self.MarryTime,
|
| | | self.BridePriceState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCoupleInfo=tagMCCoupleInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCoupleInfo.Cmd,m_NAtagMCCoupleInfo.SubCmd))] = m_NAtagMCCoupleInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|