From bed6ef2cbf2bc9c209f2f62d53b16654f237d7c3 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 23 五月 2022 17:00:21 +0800 Subject: [PATCH] 9415 【BT】【后端】古神战场(战场结算排名奖励及周榜排名奖励改为超出配置的排名无奖励) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 2080 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 2,049 insertions(+), 31 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index d7a20ed..0389a55 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -561,33 +561,41 @@ #A0 04 同步客户端时间 #tagServerDateTime class tagServerDateTime(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Year", c_ushort), - ("Month", c_ubyte), - ("Day", c_ubyte), - ("Hour", c_ubyte), - ("Minute", c_ubyte), - ("Second", c_ubyte), - ("MicSecond", c_int), - ] + Head = tagHead() + Year = 0 #(WORD Year) + Month = 0 #(BYTE Month) + Day = 0 #(BYTE Day) + Hour = 0 #(BYTE Hour) + Minute = 0 #(BYTE Minute) + Second = 0 #(BYTE Second) + MicSecond = 0 #(DWORD MicSecond) + CrossServerTime = "" #(char CrossServerTime[19]) + data = None def __init__(self): self.Clear() - self.Cmd = 0xA0 - self.SubCmd = 0x04 + self.Head.Cmd = 0xA0 + self.Head.SubCmd = 0x04 return - def ReadData(self, stringData, _pos=0, _len=0): + def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() + _pos = self.Head.ReadData(_lpData, _pos) + self.Year,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Month,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Day,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Hour,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Minute,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Second,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MicSecond,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CrossServerTime,_pos = CommFunc.ReadString(_lpData, _pos,19) + return _pos def Clear(self): - self.Cmd = 0xA0 - self.SubCmd = 0x04 + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA0 + self.Head.SubCmd = 0x04 self.Year = 0 self.Month = 0 self.Day = 0 @@ -595,42 +603,64 @@ self.Minute = 0 self.Second = 0 self.MicSecond = 0 + self.CrossServerTime = "" return def GetLength(self): - return sizeof(tagServerDateTime) + length = 0 + length += self.Head.GetLength() + length += 2 + length += 1 + length += 1 + length += 1 + length += 1 + length += 1 + length += 4 + length += 19 + + return length def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.Year) + data = CommFunc.WriteBYTE(data, self.Month) + data = CommFunc.WriteBYTE(data, self.Day) + data = CommFunc.WriteBYTE(data, self.Hour) + data = CommFunc.WriteBYTE(data, self.Minute) + data = CommFunc.WriteBYTE(data, self.Second) + data = CommFunc.WriteDWORD(data, self.MicSecond) + data = CommFunc.WriteString(data, 19, self.CrossServerTime) + return data def OutputString(self): - DumpString = '''//A0 04 同步客户端时间 //tagServerDateTime: - Cmd:%s, - SubCmd:%s, + DumpString = ''' + Head:%s, Year:%d, Month:%d, Day:%d, Hour:%d, Minute:%d, Second:%d, - MicSecond:%d + MicSecond:%d, + CrossServerTime:%s '''\ %( - self.Cmd, - self.SubCmd, + self.Head.OutputString(), self.Year, self.Month, self.Day, self.Hour, self.Minute, self.Second, - self.MicSecond + self.MicSecond, + self.CrossServerTime ) return DumpString m_NAtagServerDateTime=tagServerDateTime() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagServerDateTime.Cmd,m_NAtagServerDateTime.SubCmd))] = m_NAtagServerDateTime +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagServerDateTime.Head.Cmd,m_NAtagServerDateTime.Head.SubCmd))] = m_NAtagServerDateTime #------------------------------------------------------ @@ -7276,6 +7306,994 @@ #------------------------------------------------------ +# B3 24 喜糖列表 #tagGCCandyList + +class tagGCCandyInfo(Structure): + PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方 + NameALen = 0 #(BYTE NameALen) + PlayerNameA = "" #(String PlayerNameA) + PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方 + NameBLen = 0 #(BYTE NameBLen) + PlayerNameB = "" #(String PlayerNameB) + BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID + MarryTime = 0 #(DWORD MarryTime)// 成亲时间戳,秒 + EndTime = 0 #(DWORD EndTime)// 结束时间戳,秒 + Prosperity = 0 #(DWORD Prosperity)// 当前繁荣度 + FireworksTotalBuyCount = 0 #(BYTE FireworksTotalBuyCount)// 烟花总已购买次数 + FireworksPlayerBuyCount = 0 #(BYTE FireworksPlayerBuyCount)// 烟花玩家已购买次数 + PlayerFreeEatCandyCount = 0 #(BYTE PlayerFreeEatCandyCount)// 玩家已免费吃该喜糖总次数,包含免费次数、烟花赠送次数 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen) + self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen) + self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.EndTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Prosperity,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FireworksTotalBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FireworksPlayerBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerFreeEatCandyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerIDA = 0 + self.NameALen = 0 + self.PlayerNameA = "" + self.PlayerIDB = 0 + self.NameBLen = 0 + self.PlayerNameB = "" + self.BridePriceID = 0 + self.MarryTime = 0 + self.EndTime = 0 + self.Prosperity = 0 + self.FireworksTotalBuyCount = 0 + self.FireworksPlayerBuyCount = 0 + self.PlayerFreeEatCandyCount = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += len(self.PlayerNameA) + length += 4 + length += 1 + length += len(self.PlayerNameB) + length += 1 + length += 4 + length += 4 + length += 4 + length += 1 + length += 1 + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.PlayerIDA) + data = CommFunc.WriteBYTE(data, self.NameALen) + data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA) + data = CommFunc.WriteDWORD(data, self.PlayerIDB) + data = CommFunc.WriteBYTE(data, self.NameBLen) + data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB) + data = CommFunc.WriteBYTE(data, self.BridePriceID) + data = CommFunc.WriteDWORD(data, self.MarryTime) + data = CommFunc.WriteDWORD(data, self.EndTime) + data = CommFunc.WriteDWORD(data, self.Prosperity) + data = CommFunc.WriteBYTE(data, self.FireworksTotalBuyCount) + data = CommFunc.WriteBYTE(data, self.FireworksPlayerBuyCount) + data = CommFunc.WriteBYTE(data, self.PlayerFreeEatCandyCount) + return data + + def OutputString(self): + DumpString = ''' + PlayerIDA:%d, + NameALen:%d, + PlayerNameA:%s, + PlayerIDB:%d, + NameBLen:%d, + PlayerNameB:%s, + BridePriceID:%d, + MarryTime:%d, + EndTime:%d, + Prosperity:%d, + FireworksTotalBuyCount:%d, + FireworksPlayerBuyCount:%d, + PlayerFreeEatCandyCount:%d + '''\ + %( + self.PlayerIDA, + self.NameALen, + self.PlayerNameA, + self.PlayerIDB, + self.NameBLen, + self.PlayerNameB, + self.BridePriceID, + self.MarryTime, + self.EndTime, + self.Prosperity, + self.FireworksTotalBuyCount, + self.FireworksPlayerBuyCount, + self.PlayerFreeEatCandyCount + ) + return DumpString + + +class tagGCCandyList(Structure): + Head = tagHead() + CandyCount = 0 #(WORD CandyCount) + CandyInfoList = list() #(vector<tagGCCandyInfo> CandyInfoList)// 可吃喜糖列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x24 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.CandyCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.CandyCount): + temCandyInfoList = tagGCCandyInfo() + _pos = temCandyInfoList.ReadData(_lpData, _pos) + self.CandyInfoList.append(temCandyInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x24 + self.CandyCount = 0 + self.CandyInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + for i in range(self.CandyCount): + length += self.CandyInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.CandyCount) + for i in range(self.CandyCount): + data = CommFunc.WriteString(data, self.CandyInfoList[i].GetLength(), self.CandyInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + CandyCount:%d, + CandyInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.CandyCount, + "..." + ) + return DumpString + + +m_NAtagGCCandyList=tagGCCandyList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCandyList.Head.Cmd,m_NAtagGCCandyList.Head.SubCmd))] = m_NAtagGCCandyList + + +#------------------------------------------------------ +# B3 19 魅力贡献榜 #tagGCCharmOfferBillboardDataList + +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 = 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.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 = 0x19 + self.PlayerID = 0 + self.QueryType = 0 + self.DataCount = 0 + self.OfferBillboardDataList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += 1 + for i in range(self.DataCount): + length += self.OfferBillboardDataList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.PlayerID) + 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, + QueryType:%d, + DataCount:%d, + OfferBillboardDataList:%s + '''\ + %( + self.Head.OutputString(), + self.PlayerID, + self.QueryType, + self.DataCount, + "..." + ) + return DumpString + + +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 22 收到提亲信息 #tagGCMarryReqInfo + +class tagGCMarryReqInfo(Structure): + Head = tagHead() + PlayerID = 0 #(DWORD PlayerID)// 同一个玩家ID多次提亲时可能同步多次,前端覆盖数据即可 + NameLen = 0 #(BYTE NameLen) + PlayerName = "" #(String PlayerName) + BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x22 + 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.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x22 + self.PlayerID = 0 + self.NameLen = 0 + self.PlayerName = "" + self.BridePriceID = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += len(self.PlayerName) + length += 1 + + return length + + def GetBuffer(self): + 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.BridePriceID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PlayerID:%d, + NameLen:%d, + PlayerName:%s, + BridePriceID:%d + '''\ + %( + self.Head.OutputString(), + self.PlayerID, + self.NameLen, + self.PlayerName, + self.BridePriceID + ) + return DumpString + + +m_NAtagGCMarryReqInfo=tagGCMarryReqInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqInfo.Head.Cmd,m_NAtagGCMarryReqInfo.Head.SubCmd))] = m_NAtagGCMarryReqInfo + + +#------------------------------------------------------ +# B3 21 提亲发送成功 #tagGCMarryReqOK + +class tagGCMarryReqOK(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + 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 = 0xB3 + self.SubCmd = 0x21 + return + + def GetLength(self): + return sizeof(tagGCMarryReqOK) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 21 提亲发送成功 //tagGCMarryReqOK: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagGCMarryReqOK=tagGCMarryReqOK() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqOK.Cmd,m_NAtagGCMarryReqOK.SubCmd))] = m_NAtagGCMarryReqOK + + +#------------------------------------------------------ +# B3 23 提亲回应结果 #tagGCMarryResponseRet + +class tagGCMarryResponseRet(Structure): + Head = tagHead() + PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方 + NameALen = 0 #(BYTE NameALen) + PlayerNameA = "" #(String PlayerNameA) + PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方 + NameBLen = 0 #(BYTE NameBLen) + PlayerNameB = "" #(String PlayerNameB) + IsOK = 0 #(BYTE IsOK)// 是否同意,0-否,1-是; 如果同意则双方都会收到该包,根据玩家ID判断自己是请求或接受方,显示不同的同意结果界面;不同意只有请求方会收到 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x23 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen) + self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen) + self.IsOK,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x23 + self.PlayerIDA = 0 + self.NameALen = 0 + self.PlayerNameA = "" + self.PlayerIDB = 0 + self.NameBLen = 0 + self.PlayerNameB = "" + self.IsOK = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += len(self.PlayerNameA) + length += 4 + length += 1 + length += len(self.PlayerNameB) + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.PlayerIDA) + data = CommFunc.WriteBYTE(data, self.NameALen) + data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA) + data = CommFunc.WriteDWORD(data, self.PlayerIDB) + data = CommFunc.WriteBYTE(data, self.NameBLen) + data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB) + data = CommFunc.WriteBYTE(data, self.IsOK) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PlayerIDA:%d, + NameALen:%d, + PlayerNameA:%s, + PlayerIDB:%d, + NameBLen:%d, + PlayerNameB:%s, + IsOK:%d + '''\ + %( + self.Head.OutputString(), + self.PlayerIDA, + self.NameALen, + self.PlayerNameA, + self.PlayerIDB, + self.NameBLen, + self.PlayerNameB, + self.IsOK + ) + return DumpString + + +m_NAtagGCMarryResponseRet=tagGCMarryResponseRet() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryResponseRet.Head.Cmd,m_NAtagGCMarryResponseRet.Head.SubCmd))] = m_NAtagGCMarryResponseRet + + +#------------------------------------------------------ +# B3 25 玩家魅力值信息 #tagGCPlayerCharmValueInfo + +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 + 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): + self.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x20 + 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): + temSendGiftsOKList = tagGCSendGiftsOK() + _pos = temSendGiftsOKList.ReadData(_lpData, _pos) + self.SendGiftsOKList.append(temSendGiftsOKList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x20 + self.Count = 0 + self.SendGiftsOKList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + 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.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, + Count:%d, + SendGiftsOKList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +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 + + +#------------------------------------------------------ #B3 01 添加社交对象 #tagGCAddSocialPlayer class tagGCAddSocialPlayer(Structure): @@ -7646,7 +8664,7 @@ _pack_ = 1 _fields_ = [ ("PlayerID", c_int), - ("SortValue", c_int), + ("SortValue", c_int), # 亲密组时为亲密度 ] def __init__(self): @@ -7683,7 +8701,7 @@ 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 @@ -11270,6 +12288,283 @@ #------------------------------------------------------ +# C0 09 跨服战场玩家购买战场信息 #tagGCCrossBattlefieldBuyInfo + +class tagGCCrossBattlefieldPlayer(Structure): + PlayerID = 0 #(DWORD PlayerID) + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV)//等级 + RealmLV = 0 #(WORD RealmLV)//境界 + FightPower = 0 #(DWORD FightPower)//战力求余亿部分 + FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分 + 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.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerID = 0 + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + self.FightPower = 0 + self.FightPowerEx = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 33 + length += 1 + length += 2 + length += 2 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.FightPowerEx) + return data + + def OutputString(self): + DumpString = ''' + PlayerID:%d, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d, + FightPower:%d, + FightPowerEx:%d + '''\ + %( + self.PlayerID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV, + self.FightPower, + self.FightPowerEx + ) + return DumpString + + +class tagGCCrossBattlefieldBuyPlayer(Structure): + BuyPlayerID = 0 #(DWORD BuyPlayerID)//购买的玩家ID,即召集人 + Faction = 0 #(BYTE Faction)//阵营 1-红;2-蓝 + FactionPlayerCount = 0 #(BYTE FactionPlayerCount) + FactionPlayerList = list() #(vector<tagGCCrossBattlefieldPlayer> FactionPlayerList)//阵营所有玩家列表,包含召集人 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.BuyPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FactionPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.FactionPlayerCount): + temFactionPlayerList = tagGCCrossBattlefieldPlayer() + _pos = temFactionPlayerList.ReadData(_lpData, _pos) + self.FactionPlayerList.append(temFactionPlayerList) + return _pos + + def Clear(self): + self.BuyPlayerID = 0 + self.Faction = 0 + self.FactionPlayerCount = 0 + self.FactionPlayerList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += 1 + for i in range(self.FactionPlayerCount): + length += self.FactionPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.BuyPlayerID) + data = CommFunc.WriteBYTE(data, self.Faction) + data = CommFunc.WriteBYTE(data, self.FactionPlayerCount) + for i in range(self.FactionPlayerCount): + data = CommFunc.WriteString(data, self.FactionPlayerList[i].GetLength(), self.FactionPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + BuyPlayerID:%d, + Faction:%d, + FactionPlayerCount:%d, + FactionPlayerList:%s + '''\ + %( + self.BuyPlayerID, + self.Faction, + self.FactionPlayerCount, + "..." + ) + return DumpString + + +class tagGCCrossBattlefieldBuyHM(Structure): + Hour = 0 #(BYTE Hour)//战场开启时 + Minute = 0 #(BYTE Minute)//战场开启分 + BuyPlayerCount = 0 #(BYTE BuyPlayerCount) + BuyPlayerList = list() #(vector<tagGCCrossBattlefieldBuyPlayer> BuyPlayerList)//购买本场次的玩家信息列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Hour,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Minute,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.BuyPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BuyPlayerCount): + temBuyPlayerList = tagGCCrossBattlefieldBuyPlayer() + _pos = temBuyPlayerList.ReadData(_lpData, _pos) + self.BuyPlayerList.append(temBuyPlayerList) + return _pos + + def Clear(self): + self.Hour = 0 + self.Minute = 0 + self.BuyPlayerCount = 0 + self.BuyPlayerList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += 1 + for i in range(self.BuyPlayerCount): + length += self.BuyPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.Hour) + data = CommFunc.WriteBYTE(data, self.Minute) + data = CommFunc.WriteBYTE(data, self.BuyPlayerCount) + for i in range(self.BuyPlayerCount): + data = CommFunc.WriteString(data, self.BuyPlayerList[i].GetLength(), self.BuyPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Hour:%d, + Minute:%d, + BuyPlayerCount:%d, + BuyPlayerList:%s + '''\ + %( + self.Hour, + self.Minute, + self.BuyPlayerCount, + "..." + ) + return DumpString + + +class tagGCCrossBattlefieldBuyInfo(Structure): + Head = tagHead() + HMCount = 0 #(BYTE HMCount)// 为0时清空重置,其他为增量更新 + HMBuyList = list() #(vector<tagGCCrossBattlefieldBuyHM> HMBuyList)//购买场次列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x09 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.HMCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.HMCount): + temHMBuyList = tagGCCrossBattlefieldBuyHM() + _pos = temHMBuyList.ReadData(_lpData, _pos) + self.HMBuyList.append(temHMBuyList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x09 + self.HMCount = 0 + self.HMBuyList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.HMCount): + length += self.HMBuyList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.HMCount) + for i in range(self.HMCount): + data = CommFunc.WriteString(data, self.HMBuyList[i].GetLength(), self.HMBuyList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + HMCount:%d, + HMBuyList:%s + '''\ + %( + self.Head.OutputString(), + self.HMCount, + "..." + ) + return DumpString + + +m_NAtagGCCrossBattlefieldBuyInfo=tagGCCrossBattlefieldBuyInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossBattlefieldBuyInfo.Head.Cmd,m_NAtagGCCrossBattlefieldBuyInfo.Head.SubCmd))] = m_NAtagGCCrossBattlefieldBuyInfo + + +#------------------------------------------------------ # C0 07 跨服排行榜信息 #tagGCCrossBillboardInfo class tagGCCrossBillboardData(Structure): @@ -12278,6 +13573,501 @@ m_NAtagGCCrossRealmPKStartMatch=tagGCCrossRealmPKStartMatch() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKStartMatch.Cmd,m_NAtagGCCrossRealmPKStartMatch.SubCmd))] = m_NAtagGCCrossRealmPKStartMatch + + +#------------------------------------------------------ +# C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo + +class tagGCLuckyCloudBuyLotteryRec(Structure): + SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID + SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数 + NameLen = 0 #(BYTE NameLen) + PlayerName = "" #(String PlayerName)// 中奖玩家名 + LotteryNum = 0 #(WORD LotteryNum)// 开奖号码 + LotteryTime = 0 #(DWORD LotteryTime)// 开奖时间戳,秒 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.LotteryNum,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.LotteryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.SuperItemID = 0 + self.SuperItemCount = 0 + self.NameLen = 0 + self.PlayerName = "" + self.LotteryNum = 0 + self.LotteryTime = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += 1 + length += len(self.PlayerName) + length += 2 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.SuperItemID) + data = CommFunc.WriteBYTE(data, self.SuperItemCount) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.PlayerName) + data = CommFunc.WriteWORD(data, self.LotteryNum) + data = CommFunc.WriteDWORD(data, self.LotteryTime) + return data + + def OutputString(self): + DumpString = ''' + SuperItemID:%d, + SuperItemCount:%d, + NameLen:%d, + PlayerName:%s, + LotteryNum:%d, + LotteryTime:%d + '''\ + %( + self.SuperItemID, + self.SuperItemCount, + self.NameLen, + self.PlayerName, + self.LotteryNum, + self.LotteryTime + ) + return DumpString + + +class tagGCLuckyCloudBuyLotteryRecInfo(Structure): + Head = tagHead() + ZoneCount = 0 #(BYTE ZoneCount)// 分区数 + ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有分区ID列表 + ZoneID = 0 #(BYTE ZoneID)// 返回记录分区ID + Count = 0 #(WORD Count) + LotteryRecList = list() #(vector<tagGCLuckyCloudBuyLotteryRec> LotteryRecList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x14 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ZoneCount): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.ZoneIDList.append(value) + self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.Count): + temLotteryRecList = tagGCLuckyCloudBuyLotteryRec() + _pos = temLotteryRecList.ReadData(_lpData, _pos) + self.LotteryRecList.append(temLotteryRecList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x14 + self.ZoneCount = 0 + self.ZoneIDList = list() + self.ZoneID = 0 + self.Count = 0 + self.LotteryRecList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 * self.ZoneCount + length += 1 + length += 2 + for i in range(self.Count): + length += self.LotteryRecList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ZoneCount) + for i in range(self.ZoneCount): + data = CommFunc.WriteBYTE(data, self.ZoneIDList[i]) + data = CommFunc.WriteBYTE(data, self.ZoneID) + data = CommFunc.WriteWORD(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.LotteryRecList[i].GetLength(), self.LotteryRecList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ZoneCount:%d, + ZoneIDList:%s, + ZoneID:%d, + Count:%d, + LotteryRecList:%s + '''\ + %( + self.Head.OutputString(), + self.ZoneCount, + "...", + self.ZoneID, + self.Count, + "..." + ) + return DumpString + + +m_NAtagGCLuckyCloudBuyLotteryRecInfo=tagGCLuckyCloudBuyLotteryRecInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyLotteryRecInfo + + +#------------------------------------------------------ +# C0 13 幸运云购购买号码记录 #tagGCLuckyCloudBuyNumRecInfo + +class tagGCLuckyCloudBuyNumRec(Structure): + NameLen = 0 #(BYTE NameLen) + PlayerName = "" #(String PlayerName) + BuyNum = 0 #(WORD BuyNum) + 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.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.BuyNum,_pos = CommFunc.ReadWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.NameLen = 0 + self.PlayerName = "" + self.BuyNum = 0 + return + + def GetLength(self): + length = 0 + length += 1 + length += len(self.PlayerName) + length += 2 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.PlayerName) + data = CommFunc.WriteWORD(data, self.BuyNum) + return data + + def OutputString(self): + DumpString = ''' + NameLen:%d, + PlayerName:%s, + BuyNum:%d + '''\ + %( + self.NameLen, + self.PlayerName, + self.BuyNum + ) + return DumpString + + +class tagGCLuckyCloudBuyNumRecInfo(Structure): + Head = tagHead() + RemainCount = 0 #(WORD RemainCount)// 开奖剩余份数 + Count = 0 #(WORD Count) + BuyNumRecList = list() #(vector<tagGCLuckyCloudBuyNumRec> BuyNumRecList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x13 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.RemainCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.Count): + temBuyNumRecList = tagGCLuckyCloudBuyNumRec() + _pos = temBuyNumRecList.ReadData(_lpData, _pos) + self.BuyNumRecList.append(temBuyNumRecList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x13 + self.RemainCount = 0 + self.Count = 0 + self.BuyNumRecList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + length += 2 + for i in range(self.Count): + length += self.BuyNumRecList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.RemainCount) + data = CommFunc.WriteWORD(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.BuyNumRecList[i].GetLength(), self.BuyNumRecList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + RemainCount:%d, + Count:%d, + BuyNumRecList:%s + '''\ + %( + self.Head.OutputString(), + self.RemainCount, + self.Count, + "..." + ) + return DumpString + + +m_NAtagGCLuckyCloudBuyNumRecInfo=tagGCLuckyCloudBuyNumRecInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyNumRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyNumRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyNumRecInfo + + +#------------------------------------------------------ +# C0 12 幸运云购轮次信息 #tagGCLuckyCloudBuyRoundInfo + +class tagGCLuckyCloudBuyRoundItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("ItemCount", c_ushort), + ("IsBind", c_ubyte), # 是否拍品 + ] + + 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.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagGCLuckyCloudBuyRoundItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 12 幸运云购轮次信息 //tagGCLuckyCloudBuyRoundInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagGCLuckyCloudBuyRoundInfo(Structure): + Head = tagHead() + ZoneID = 0 #(BYTE ZoneID)// 所属分区ID + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + RoundID = 0 #(DWORD RoundID)// 轮次唯一ID标识,当收到的轮次ID变更时,前端需清空购买号码记录缓存 + RoundNum = 0 #(BYTE RoundNum)// 今日第几轮 + SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID + SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数 + SuperItemMoneyType = 0 #(BYTE SuperItemMoneyType)// 大奖价值货币类型 + SuperItemMoneyValue = 0 #(DWORD SuperItemMoneyValue)// 大奖价值 + LVLimit = 0 #(WORD LVLimit)//开启等级 + BaseItemCount = 0 #(BYTE BaseItemCount)// 每次购买固定奖励物品数 + BaseItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> BaseItemList)// 每次购买固定奖励物品信息 + RandItemCount = 0 #(BYTE RandItemCount)// 每次购买随机奖励物品数 + RandItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> RandItemList)// 每次购买随机奖励物品信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x12 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.RoundID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SuperItemMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SuperItemMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BaseItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BaseItemCount): + temBaseItemList = tagGCLuckyCloudBuyRoundItem() + _pos = temBaseItemList.ReadData(_lpData, _pos) + self.BaseItemList.append(temBaseItemList) + self.RandItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RandItemCount): + temRandItemList = tagGCLuckyCloudBuyRoundItem() + _pos = temRandItemList.ReadData(_lpData, _pos) + self.RandItemList.append(temRandItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x12 + self.ZoneID = 0 + self.StartDate = "" + self.EndtDate = "" + self.RoundID = 0 + self.RoundNum = 0 + self.SuperItemID = 0 + self.SuperItemCount = 0 + self.SuperItemMoneyType = 0 + self.SuperItemMoneyValue = 0 + self.LVLimit = 0 + self.BaseItemCount = 0 + self.BaseItemList = list() + self.RandItemCount = 0 + self.RandItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 4 + length += 1 + length += 4 + length += 1 + length += 1 + length += 4 + length += 2 + length += 1 + for i in range(self.BaseItemCount): + length += self.BaseItemList[i].GetLength() + length += 1 + for i in range(self.RandItemCount): + length += self.RandItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ZoneID) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteDWORD(data, self.RoundID) + data = CommFunc.WriteBYTE(data, self.RoundNum) + data = CommFunc.WriteDWORD(data, self.SuperItemID) + data = CommFunc.WriteBYTE(data, self.SuperItemCount) + data = CommFunc.WriteBYTE(data, self.SuperItemMoneyType) + data = CommFunc.WriteDWORD(data, self.SuperItemMoneyValue) + data = CommFunc.WriteWORD(data, self.LVLimit) + data = CommFunc.WriteBYTE(data, self.BaseItemCount) + for i in range(self.BaseItemCount): + data = CommFunc.WriteString(data, self.BaseItemList[i].GetLength(), self.BaseItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.RandItemCount) + for i in range(self.RandItemCount): + data = CommFunc.WriteString(data, self.RandItemList[i].GetLength(), self.RandItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ZoneID:%d, + StartDate:%s, + EndtDate:%s, + RoundID:%d, + RoundNum:%d, + SuperItemID:%d, + SuperItemCount:%d, + SuperItemMoneyType:%d, + SuperItemMoneyValue:%d, + LVLimit:%d, + BaseItemCount:%d, + BaseItemList:%s, + RandItemCount:%d, + RandItemList:%s + '''\ + %( + self.Head.OutputString(), + self.ZoneID, + self.StartDate, + self.EndtDate, + self.RoundID, + self.RoundNum, + self.SuperItemID, + self.SuperItemCount, + self.SuperItemMoneyType, + self.SuperItemMoneyValue, + self.LVLimit, + self.BaseItemCount, + "...", + self.RandItemCount, + "..." + ) + return DumpString + + +m_NAtagGCLuckyCloudBuyRoundInfo=tagGCLuckyCloudBuyRoundInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyRoundInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyRoundInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyRoundInfo #------------------------------------------------------ @@ -37820,6 +39610,114 @@ #------------------------------------------------------ +# B3 27 情戒信息 #tagMCLoveRingInfo + +class tagMCLoveRingInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ClassLV", c_ubyte), # 阶 + ("StarLV", c_ubyte), # 星 + ("EatCount", c_int), # 本星已淬炼道具数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x27 + 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 = 0x27 + self.ClassLV = 0 + self.StarLV = 0 + self.EatCount = 0 + return + + def GetLength(self): + return sizeof(tagMCLoveRingInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 27 情戒信息 //tagMCLoveRingInfo: + Cmd:%s, + SubCmd:%s, + ClassLV:%d, + StarLV:%d, + EatCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ClassLV, + self.StarLV, + self.EatCount + ) + return DumpString + + +m_NAtagMCLoveRingInfo=tagMCLoveRingInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingInfo.Cmd,m_NAtagMCLoveRingInfo.SubCmd))] = m_NAtagMCLoveRingInfo + + +#------------------------------------------------------ +# B3 29 情戒解锁成功 #tagMCLoveRingUnlockOK + +class tagMCLoveRingUnlockOK(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x29 + 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 = 0x29 + return + + def GetLength(self): + return sizeof(tagMCLoveRingUnlockOK) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 29 情戒解锁成功 //tagMCLoveRingUnlockOK: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagMCLoveRingUnlockOK=tagMCLoveRingUnlockOK() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingUnlockOK.Cmd,m_NAtagMCLoveRingUnlockOK.SubCmd))] = m_NAtagMCLoveRingUnlockOK + + +#------------------------------------------------------ # B4 11 新增恶意攻击玩家 #tagMCAddMaliciousAtkPlayer class tagMCAddMaliciousAtkPlayer(Structure): @@ -39350,6 +41248,74 @@ #------------------------------------------------------ +# C1 07 跨服战场玩家信息 #tagMCCrossBattlefieldPlayerInfo + +class tagMCCrossBattlefieldPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BuyOpenCountToday", c_ubyte), # 今日已购买开启战场次数 + ("HighScoreToday", c_int), # 今日最高积分 + ("EnterCountWeek", c_int), # 本周总参与次数 + ("BuyOpenCountWeek", c_int), # 本周总购买召集次数 + ("HighScoreTotalWeek", c_int), # 本周每日最高分累加总分 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x07 + 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 = 0xC1 + self.SubCmd = 0x07 + self.BuyOpenCountToday = 0 + self.HighScoreToday = 0 + self.EnterCountWeek = 0 + self.BuyOpenCountWeek = 0 + self.HighScoreTotalWeek = 0 + return + + def GetLength(self): + return sizeof(tagMCCrossBattlefieldPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 07 跨服战场玩家信息 //tagMCCrossBattlefieldPlayerInfo: + Cmd:%s, + SubCmd:%s, + BuyOpenCountToday:%d, + HighScoreToday:%d, + EnterCountWeek:%d, + BuyOpenCountWeek:%d, + HighScoreTotalWeek:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BuyOpenCountToday, + self.HighScoreToday, + self.EnterCountWeek, + self.BuyOpenCountWeek, + self.HighScoreTotalWeek + ) + return DumpString + + +m_NAtagMCCrossBattlefieldPlayerInfo=tagMCCrossBattlefieldPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossBattlefieldPlayerInfo.Cmd,m_NAtagMCCrossBattlefieldPlayerInfo.SubCmd))] = m_NAtagMCCrossBattlefieldPlayerInfo + + +#------------------------------------------------------ # C1 02 跨服PK玩家奖励记录 #tagMCCrossRealmPKAwardState class tagMCCrossRealmPKAwardState(Structure): @@ -39666,6 +41632,58 @@ #------------------------------------------------------ +# C1 08 幸运云购玩家信息 #tagMCLuckyCloudBuyPlayerInfo + +class tagMCLuckyCloudBuyPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BuyCount", c_ushort), # 本轮已购买份数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x08 + 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 = 0xC1 + self.SubCmd = 0x08 + self.BuyCount = 0 + return + + def GetLength(self): + return sizeof(tagMCLuckyCloudBuyPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 08 幸运云购玩家信息 //tagMCLuckyCloudBuyPlayerInfo: + Cmd:%s, + SubCmd:%s, + BuyCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BuyCount + ) + return DumpString + + +m_NAtagMCLuckyCloudBuyPlayerInfo=tagMCLuckyCloudBuyPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyCloudBuyPlayerInfo.Cmd,m_NAtagMCLuckyCloudBuyPlayerInfo.SubCmd))] = m_NAtagMCLuckyCloudBuyPlayerInfo + + +#------------------------------------------------------ # C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer class tagMCPrepareEnterCrossServer(Structure): -- Gitblit v1.8.0