From 42f1ae76751b709e75d90d87959829c6c59de3a3 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 09 十月 2022 18:50:26 +0800 Subject: [PATCH] 9455 【越南】【后端】通天令(主干 冲突) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 2297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 2,225 insertions(+), 72 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index f1676de..adb01bd 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -1304,6 +1304,58 @@ #------------------------------------------------------ +# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer + +class tagCGQueryArenaBattlePlayer(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PlayerID", c_int), #目标玩家ID,仅支持查真实玩家 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA9 + self.SubCmd = 0xA5 + 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 = 0xA9 + self.SubCmd = 0xA5 + self.PlayerID = 0 + return + + def GetLength(self): + return sizeof(tagCGQueryArenaBattlePlayer) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 A5 查看竞技场对战玩家最新信息 //tagCGQueryArenaBattlePlayer: + Cmd:%s, + SubCmd:%s, + PlayerID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PlayerID + ) + return DumpString + + +m_NAtagCGQueryArenaBattlePlayer=tagCGQueryArenaBattlePlayer() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattlePlayer.Cmd,m_NAtagCGQueryArenaBattlePlayer.SubCmd))] = m_NAtagCGQueryArenaBattlePlayer + + +#------------------------------------------------------ # A9 A8 查看竞技场对战记录 #tagCGQueryArenaBattleRecord class tagCGQueryArenaBattleRecord(Structure): @@ -2275,6 +2327,222 @@ m_NAtagCGUseAssistThanksGift=tagCGUseAssistThanksGift() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGUseAssistThanksGift.Cmd,m_NAtagCGUseAssistThanksGift.SubCmd))] = m_NAtagCGUseAssistThanksGift + + +#------------------------------------------------------ +# B3 19 提升魅力等级 #tagCGCharmLVUp + +class tagCGCharmLVUp(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x19 + 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 = 0x19 + return + + def GetLength(self): + return sizeof(tagCGCharmLVUp) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCGCharmLVUp=tagCGCharmLVUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp + + +#------------------------------------------------------ +# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery + +class tagCGCharmOfferBillboardQuery(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PlayerID", c_int), # 魅力玩家ID + ("QueryType", c_ubyte), # 查看类型: 1-总榜,2-周榜,3-日榜 + ("QueryCount", c_ubyte), # 查看名次数量,最大255 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x09 + 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 = 0x09 + self.PlayerID = 0 + self.QueryType = 0 + self.QueryCount = 0 + return + + def GetLength(self): + return sizeof(tagCGCharmOfferBillboardQuery) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery: + Cmd:%s, + SubCmd:%s, + PlayerID:%d, + QueryType:%d, + QueryCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PlayerID, + self.QueryType, + self.QueryCount + ) + return DumpString + + +m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery + + +#------------------------------------------------------ +# B3 16 和平离婚回应 #tagGCMarryBreakResponse + +class tagGCMarryBreakResponse(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("IsOK", c_ubyte), # 是否同意,0-否,1-是 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x16 + 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 = 0x16 + self.IsOK = 0 + return + + def GetLength(self): + return sizeof(tagGCMarryBreakResponse) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse: + Cmd:%s, + SubCmd:%s, + IsOK:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.IsOK + ) + return DumpString + + +m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse + + +#------------------------------------------------------ +# B3 12 提亲回应 #tagCGMarryResponse + +class tagCGMarryResponse(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ReqPlayerID", c_int), # 提亲的玩家ID + ("IsOK", c_ubyte), # 是否同意,0-否,1-是 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x12 + 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 = 0x12 + self.ReqPlayerID = 0 + self.IsOK = 0 + return + + def GetLength(self): + return sizeof(tagCGMarryResponse) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse: + Cmd:%s, + SubCmd:%s, + ReqPlayerID:%d, + IsOK:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ReqPlayerID, + self.IsOK + ) + return DumpString + + +m_NAtagCGMarryResponse=tagCGMarryResponse() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse #------------------------------------------------------ @@ -3719,6 +3987,422 @@ #------------------------------------------------------ +# C0 21 跨服排位仙官申请回应 #tagCGChampionshipOfficialApplyReply + +class tagCGChampionshipOfficialApplyReply(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MainOfficialID", c_ushort), #界主官职ID + ("OfficialID", c_ushort), #申请官职ID + ("PlayerID", c_int), #申请的玩家ID + ("IsOK", c_ubyte), #是否同意;1-是;0-否 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x21 + self.MainOfficialID = 0 + self.OfficialID = 0 + self.PlayerID = 0 + self.IsOK = 0 + return + + def GetLength(self): + return sizeof(tagCGChampionshipOfficialApplyReply) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 21 跨服排位仙官申请回应 //tagCGChampionshipOfficialApplyReply: + Cmd:%s, + SubCmd:%s, + MainOfficialID:%d, + OfficialID:%d, + PlayerID:%d, + IsOK:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MainOfficialID, + self.OfficialID, + self.PlayerID, + self.IsOK + ) + return DumpString + + +m_NAtagCGChampionshipOfficialApplyReply=tagCGChampionshipOfficialApplyReply() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialApplyReply.Cmd,m_NAtagCGChampionshipOfficialApplyReply.SubCmd))] = m_NAtagCGChampionshipOfficialApplyReply + + +#------------------------------------------------------ +# C0 23 跨服排位仙官挑战记录查询 #tagCGChampionshipOfficialChallengeQuery + +class tagCGChampionshipOfficialChallengeQuery(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MainOfficialID", c_ushort), #界主官职ID + ("OfficialID", c_ushort), #查询官职ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x23 + 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 = 0xC0 + self.SubCmd = 0x23 + self.MainOfficialID = 0 + self.OfficialID = 0 + return + + def GetLength(self): + return sizeof(tagCGChampionshipOfficialChallengeQuery) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 23 跨服排位仙官挑战记录查询 //tagCGChampionshipOfficialChallengeQuery: + Cmd:%s, + SubCmd:%s, + MainOfficialID:%d, + OfficialID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MainOfficialID, + self.OfficialID + ) + return DumpString + + +m_NAtagCGChampionshipOfficialChallengeQuery=tagCGChampionshipOfficialChallengeQuery() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialChallengeQuery.Cmd,m_NAtagCGChampionshipOfficialChallengeQuery.SubCmd))] = m_NAtagCGChampionshipOfficialChallengeQuery + + +#------------------------------------------------------ +# C0 24 跨服排位辞退下级仙官 #tagCGChampionshipOfficialKick + +class tagCGChampionshipOfficialKick(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MainOfficialID", c_ushort), #界主官职ID + ("OfficialID", c_ushort), #目标官职ID + ("PlayerID", c_int), #目标玩家ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x24 + 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 = 0xC0 + self.SubCmd = 0x24 + self.MainOfficialID = 0 + self.OfficialID = 0 + self.PlayerID = 0 + return + + def GetLength(self): + return sizeof(tagCGChampionshipOfficialKick) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 24 跨服排位辞退下级仙官 //tagCGChampionshipOfficialKick: + Cmd:%s, + SubCmd:%s, + MainOfficialID:%d, + OfficialID:%d, + PlayerID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MainOfficialID, + self.OfficialID, + self.PlayerID + ) + return DumpString + + +m_NAtagCGChampionshipOfficialKick=tagCGChampionshipOfficialKick() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialKick.Cmd,m_NAtagCGChampionshipOfficialKick.SubCmd))] = m_NAtagCGChampionshipOfficialKick + + +#------------------------------------------------------ +# C0 25 跨服排位主动离任仙官 #tagCGChampionshipOfficialLeave + +class tagCGChampionshipOfficialLeave(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MainOfficialID", c_ushort), #界主官职ID + ("OfficialID", c_ushort), #离任官职ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x25 + self.MainOfficialID = 0 + self.OfficialID = 0 + return + + def GetLength(self): + return sizeof(tagCGChampionshipOfficialLeave) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 25 跨服排位主动离任仙官 //tagCGChampionshipOfficialLeave: + Cmd:%s, + SubCmd:%s, + MainOfficialID:%d, + OfficialID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MainOfficialID, + self.OfficialID + ) + return DumpString + + +m_NAtagCGChampionshipOfficialLeave=tagCGChampionshipOfficialLeave() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialLeave.Cmd,m_NAtagCGChampionshipOfficialLeave.SubCmd))] = m_NAtagCGChampionshipOfficialLeave + + +#------------------------------------------------------ +# C0 09 跨服战场召集场次修改 #tagCGCrossBattlefieldCallChange + +class tagCGCrossBattlefieldCallChange(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Hour", c_ubyte), #战场开启时 + ("Minute", c_ubyte), #战场开启分 + ("ServerOnly", c_ubyte), #是否仅本服玩家可加入,0-否,1-是 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x09 + 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 = 0xC0 + self.SubCmd = 0x09 + self.Hour = 0 + self.Minute = 0 + self.ServerOnly = 0 + return + + def GetLength(self): + return sizeof(tagCGCrossBattlefieldCallChange) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 09 跨服战场召集场次修改 //tagCGCrossBattlefieldCallChange: + Cmd:%s, + SubCmd:%s, + Hour:%d, + Minute:%d, + ServerOnly:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Hour, + self.Minute, + self.ServerOnly + ) + return DumpString + + +m_NAtagCGCrossBattlefieldCallChange=tagCGCrossBattlefieldCallChange() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallChange.Cmd,m_NAtagCGCrossBattlefieldCallChange.SubCmd))] = m_NAtagCGCrossBattlefieldCallChange + + +#------------------------------------------------------ +# C0 08 跨服战场召集场次踢人 #tagCGCrossBattlefieldCallKick + +class tagCGCrossBattlefieldCallKick(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Hour", c_ubyte), #战场开启时 + ("Minute", c_ubyte), #战场开启分 + ("TagPlayerID", c_int), #目标玩家ID,即要被踢出去的玩家ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x08 + self.Hour = 0 + self.Minute = 0 + self.TagPlayerID = 0 + return + + def GetLength(self): + return sizeof(tagCGCrossBattlefieldCallKick) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 08 跨服战场召集场次踢人 //tagCGCrossBattlefieldCallKick: + Cmd:%s, + SubCmd:%s, + Hour:%d, + Minute:%d, + TagPlayerID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Hour, + self.Minute, + self.TagPlayerID + ) + return DumpString + + +m_NAtagCGCrossBattlefieldCallKick=tagCGCrossBattlefieldCallKick() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallKick.Cmd,m_NAtagCGCrossBattlefieldCallKick.SubCmd))] = m_NAtagCGCrossBattlefieldCallKick + + +#------------------------------------------------------ +# C0 07 跨服战场加入召集场次 #tagCGCrossBattlefieldJoinByCall + +class tagCGCrossBattlefieldJoinByCall(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Hour", c_ubyte), #战场开启时 + ("Minute", c_ubyte), #战场开启分 + ("BuyPlayerID", c_int), #加入目标玩家的召集队伍,即购买召集场的玩家ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x07 + self.Hour = 0 + self.Minute = 0 + self.BuyPlayerID = 0 + return + + def GetLength(self): + return sizeof(tagCGCrossBattlefieldJoinByCall) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 07 跨服战场加入召集场次 //tagCGCrossBattlefieldJoinByCall: + Cmd:%s, + SubCmd:%s, + Hour:%d, + Minute:%d, + BuyPlayerID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Hour, + self.Minute, + self.BuyPlayerID + ) + return DumpString + + +m_NAtagCGCrossBattlefieldJoinByCall=tagCGCrossBattlefieldJoinByCall() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldJoinByCall.Cmd,m_NAtagCGCrossBattlefieldJoinByCall.SubCmd))] = m_NAtagCGCrossBattlefieldJoinByCall + + +#------------------------------------------------------ # C0 03 强制退出跨服状态 #tagCGForceQuitCrossState class tagCGForceQuitCrossState(Structure): @@ -3764,6 +4448,106 @@ m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState + + +#------------------------------------------------------ +# C0 06 查询幸运云购开奖记录 #tagCGQueryLuckyCloudBuyLotteryRec + +class tagCGQueryLuckyCloudBuyLotteryRec(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ZoneID", c_ubyte), #查询分区ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x06 + 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 = 0xC0 + self.SubCmd = 0x06 + self.ZoneID = 0 + return + + def GetLength(self): + return sizeof(tagCGQueryLuckyCloudBuyLotteryRec) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 06 查询幸运云购开奖记录 //tagCGQueryLuckyCloudBuyLotteryRec: + Cmd:%s, + SubCmd:%s, + ZoneID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ZoneID + ) + return DumpString + + +m_NAtagCGQueryLuckyCloudBuyLotteryRec=tagCGQueryLuckyCloudBuyLotteryRec() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyLotteryRec.Cmd,m_NAtagCGQueryLuckyCloudBuyLotteryRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyLotteryRec + + +#------------------------------------------------------ +# C0 05 查询幸运云购购买号码记录 #tagCGQueryLuckyCloudBuyNumRec + +class tagCGQueryLuckyCloudBuyNumRec(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x05 + 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 = 0xC0 + self.SubCmd = 0x05 + return + + def GetLength(self): + return sizeof(tagCGQueryLuckyCloudBuyNumRec) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 05 查询幸运云购购买号码记录 //tagCGQueryLuckyCloudBuyNumRec: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCGQueryLuckyCloudBuyNumRec=tagCGQueryLuckyCloudBuyNumRec() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyNumRec.Cmd,m_NAtagCGQueryLuckyCloudBuyNumRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyNumRec #------------------------------------------------------ @@ -5766,6 +6550,58 @@ #------------------------------------------------------ +# A2 35 选择境界难度层级 #tagCMSelectRealmDifficulty + +class tagCMSelectRealmDifficulty(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("RealmDifficulty", c_ubyte), #境界难度 = 100 + 所选境界等级,如境界13,则发113 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA2 + self.SubCmd = 0x35 + 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 = 0xA2 + self.SubCmd = 0x35 + self.RealmDifficulty = 0 + return + + def GetLength(self): + return sizeof(tagCMSelectRealmDifficulty) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 35 选择境界难度层级 //tagCMSelectRealmDifficulty: + Cmd:%s, + SubCmd:%s, + RealmDifficulty:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.RealmDifficulty + ) + return DumpString + + +m_NAtagCMSelectRealmDifficulty=tagCMSelectRealmDifficulty() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectRealmDifficulty.Cmd,m_NAtagCMSelectRealmDifficulty.SubCmd))] = m_NAtagCMSelectRealmDifficulty + + +#------------------------------------------------------ # A2 30 设置聊天气泡框 #tagCMSetChatBubbleBox class tagCMSetChatBubbleBox(Structure): @@ -6756,98 +7592,52 @@ # A3 30 装备神装进阶 #tagCMEquipEvolve class tagCMEquipEvolve(Structure): - Head = tagHead() - EquipIndex = 0 #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引 - NeedEquipIDIndex = 0 #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引 - NeedItemIDIndexCnt = 0 #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数 - NeedItemIDIndex = list() #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表 - NeedSuitIndexCnt = 0 #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数 - NeedSuitIndex = list() #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表 - data = None + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("EquipIndex", c_ubyte), # 要进阶的装备在装备背包中索引 + ] def __init__(self): self.Clear() - self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0x30 + self.Cmd = 0xA3 + self.SubCmd = 0x30 return - def ReadData(self, _lpData, _pos=0, _Len=0): + def ReadData(self, stringData, _pos=0, _len=0): self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.NeedItemIDIndexCnt): - value,_pos=CommFunc.ReadBYTE(_lpData,_pos) - self.NeedItemIDIndex.append(value) - self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.NeedSuitIndexCnt): - value,_pos=CommFunc.ReadBYTE(_lpData,_pos) - self.NeedSuitIndex.append(value) - return _pos + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0x30 + self.Cmd = 0xA3 + self.SubCmd = 0x30 self.EquipIndex = 0 - self.NeedEquipIDIndex = 0 - self.NeedItemIDIndexCnt = 0 - self.NeedItemIDIndex = list() - self.NeedSuitIndexCnt = 0 - self.NeedSuitIndex = list() return def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - length += 1 - length += 1 * self.NeedItemIDIndexCnt - length += 1 - length += 1 * self.NeedSuitIndexCnt - - return length + return sizeof(tagCMEquipEvolve) def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.EquipIndex) - data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex) - data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt) - for i in range(self.NeedItemIDIndexCnt): - data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i]) - data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt) - for i in range(self.NeedSuitIndexCnt): - data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i]) - return data + return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = ''' - Head:%s, - EquipIndex:%d, - NeedEquipIDIndex:%d, - NeedItemIDIndexCnt:%d, - NeedItemIDIndex:%s, - NeedSuitIndexCnt:%d, - NeedSuitIndex:%s + DumpString = '''// A3 30 装备神装进阶 //tagCMEquipEvolve: + Cmd:%s, + SubCmd:%s, + EquipIndex:%d '''\ %( - self.Head.OutputString(), - self.EquipIndex, - self.NeedEquipIDIndex, - self.NeedItemIDIndexCnt, - "...", - self.NeedSuitIndexCnt, - "..." + self.Cmd, + self.SubCmd, + self.EquipIndex ) return DumpString m_NAtagCMEquipEvolve=tagCMEquipEvolve() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Cmd,m_NAtagCMEquipEvolve.SubCmd))] = m_NAtagCMEquipEvolve #------------------------------------------------------ @@ -6956,6 +7746,73 @@ m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve + + +#------------------------------------------------------ +# A3 31 装备神装拆解 #tagCMEquipShenDecompose + +class tagCMEquipShenDecompose(Structure): + Head = tagHead() + Count = 0 #(BYTE Count)//所在背包索引的数量 + IndexList = list() #(vector<WORD> IndexList)//所在背包索引列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x31 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.IndexList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x31 + self.Count = 0 + self.IndexList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 2 * self.Count + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteWORD(data, self.IndexList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + IndexList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagCMEquipShenDecompose=tagCMEquipShenDecompose() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipShenDecompose.Head.Cmd,m_NAtagCMEquipShenDecompose.Head.SubCmd))] = m_NAtagCMEquipShenDecompose #------------------------------------------------------ @@ -7467,6 +8324,66 @@ m_NAtagCMLingQiEquipBreak=tagCMLingQiEquipBreak() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiEquipBreak.Cmd,m_NAtagCMLingQiEquipBreak.SubCmd))] = m_NAtagCMLingQiEquipBreak + + +#------------------------------------------------------ +# A3 27 灵器培养 #tagCMLingQiTrain + +class tagCMLingQiTrain(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("EquipPlace", c_ubyte), #灵器装备位 + ("TrainType", c_ubyte), #培养类型: 1-基础培养,2-特殊培养,3-百分比培养 + ("UseItemCnt", c_ushort), #消耗材料个数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + 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 = 0xA3 + self.SubCmd = 0x27 + self.EquipPlace = 0 + self.TrainType = 0 + self.UseItemCnt = 0 + return + + def GetLength(self): + return sizeof(tagCMLingQiTrain) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 27 灵器培养 //tagCMLingQiTrain: + Cmd:%s, + SubCmd:%s, + EquipPlace:%d, + TrainType:%d, + UseItemCnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.EquipPlace, + self.TrainType, + self.UseItemCnt + ) + return DumpString + + +m_NAtagCMLingQiTrain=tagCMLingQiTrain() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiTrain.Cmd,m_NAtagCMLingQiTrain.SubCmd))] = m_NAtagCMLingQiTrain #------------------------------------------------------ @@ -9005,6 +9922,54 @@ #------------------------------------------------------ +# A5 46 购买通天令 #tagCMBuyTongTianLing + +class tagCMBuyTongTianLing(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x46 + 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 = 0x46 + return + + def GetLength(self): + return sizeof(tagCMBuyTongTianLing) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 46 购买通天令 //tagCMBuyTongTianLing: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMBuyTongTianLing=tagCMBuyTongTianLing() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyTongTianLing.Cmd,m_NAtagCMBuyTongTianLing.SubCmd))] = m_NAtagCMBuyTongTianLing + + +#------------------------------------------------------ #A5 3B 请求领取补偿#tagCMRequestCompensation class tagCMRequestCompensation(Structure): @@ -10039,6 +11004,114 @@ #------------------------------------------------------ +# A5 45 兑换通天令等级经验积分点 #tagCMExchangeTongTianLVPoint + +class tagCMExchangeTongTianLVPoint(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ExchangePoint", c_int), # 兑换点数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x45 + 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 = 0x45 + self.ExchangePoint = 0 + return + + def GetLength(self): + return sizeof(tagCMExchangeTongTianLVPoint) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 45 兑换通天令等级经验积分点 //tagCMExchangeTongTianLVPoint: + Cmd:%s, + SubCmd:%s, + ExchangePoint:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ExchangePoint + ) + return DumpString + + +m_NAtagCMExchangeTongTianLVPoint=tagCMExchangeTongTianLVPoint() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeTongTianLVPoint.Cmd,m_NAtagCMExchangeTongTianLVPoint.SubCmd))] = m_NAtagCMExchangeTongTianLVPoint + + +#------------------------------------------------------ +# A5 32 法器升级 #tagCMFaQiLVUp + +class tagCMFaQiLVUp(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("UseItemCnt", c_ushort), #消耗材料个数 + ("IsAutoBuy", c_ubyte), #是否自动购买 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x32 + 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 = 0x32 + self.UseItemCnt = 0 + self.IsAutoBuy = 0 + return + + def GetLength(self): + return sizeof(tagCMFaQiLVUp) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp: + Cmd:%s, + SubCmd:%s, + UseItemCnt:%d, + IsAutoBuy:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.UseItemCnt, + self.IsAutoBuy + ) + return DumpString + + +m_NAtagCMFaQiLVUp=tagCMFaQiLVUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp + + +#------------------------------------------------------ # A5 1C 聚魂合成 #tagCMGatherSoulCompound class tagCMGatherSoulCompound(Structure): @@ -10317,6 +11390,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("Index", c_ubyte), # 奖励索引,其他按顺序 + ("IsDaily", c_ubyte), # 是否领取每日日常的奖励,是发1,如果领取定制创角天奖励的则默认发0即可 ] def __init__(self): @@ -10334,6 +11408,7 @@ self.Cmd = 0xA5 self.SubCmd = 0x06 self.Index = 0 + self.IsDaily = 0 return def GetLength(self): @@ -10346,12 +11421,14 @@ DumpString = '''//A5 06 玩家领取在线奖励 //tagCMGetOnlinePrize: Cmd:%s, SubCmd:%s, - Index:%d + Index:%d, + IsDaily:%d '''\ %( self.Cmd, self.SubCmd, - self.Index + self.Index, + self.IsDaily ) return DumpString @@ -10414,6 +11491,114 @@ m_NAtagMCGetSuccessAward=tagMCGetSuccessAward() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGetSuccessAward.Cmd,m_NAtagMCGetSuccessAward.SubCmd))] = m_NAtagMCGetSuccessAward + + +#------------------------------------------------------ +# A5 44 通天令领取等级奖励 #tagCMGetTongTianLVAward + +class tagCMGetTongTianLVAward(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TTLV", c_ubyte), # 领取对应等级奖励,发255为一键领取所有等级奖励,包含仙品奖励 + ("IsXian", c_ubyte), # 是否领取仙品奖励,仅指定等级奖励有效 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x44 + 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 = 0x44 + self.TTLV = 0 + self.IsXian = 0 + return + + def GetLength(self): + return sizeof(tagCMGetTongTianLVAward) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 44 通天令领取等级奖励 //tagCMGetTongTianLVAward: + Cmd:%s, + SubCmd:%s, + TTLV:%d, + IsXian:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TTLV, + self.IsXian + ) + return DumpString + + +m_NAtagCMGetTongTianLVAward=tagCMGetTongTianLVAward() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianLVAward.Cmd,m_NAtagCMGetTongTianLVAward.SubCmd))] = m_NAtagCMGetTongTianLVAward + + +#------------------------------------------------------ +# A5 43 通天令领取任务奖励 #tagCMGetTongTianTaskAward + +class tagCMGetTongTianTaskAward(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TaskID", c_ubyte), # 任务ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x43 + 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 = 0x43 + self.TaskID = 0 + return + + def GetLength(self): + return sizeof(tagCMGetTongTianTaskAward) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 43 通天令领取任务奖励 //tagCMGetTongTianTaskAward: + Cmd:%s, + SubCmd:%s, + TaskID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TaskID + ) + return DumpString + + +m_NAtagCMGetTongTianTaskAward=tagCMGetTongTianTaskAward() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianTaskAward.Cmd,m_NAtagCMGetTongTianTaskAward.SubCmd))] = m_NAtagCMGetTongTianTaskAward #------------------------------------------------------ @@ -10709,6 +11894,62 @@ #------------------------------------------------------ +# A5 31 坐骑培养 #tagCMHorseTrain + +class tagCMHorseTrain(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TrainType", c_ubyte), #培养类型: 1-基础培养,2-特殊培养,3-百分比培养 + ("UseItemCnt", c_ushort), #消耗材料个数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x31 + 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 = 0x31 + self.TrainType = 0 + self.UseItemCnt = 0 + return + + def GetLength(self): + return sizeof(tagCMHorseTrain) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 31 坐骑培养 //tagCMHorseTrain: + Cmd:%s, + SubCmd:%s, + TrainType:%d, + UseItemCnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TrainType, + self.UseItemCnt + ) + return DumpString + + +m_NAtagCMHorseTrain=tagCMHorseTrain() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseTrain.Cmd,m_NAtagCMHorseTrain.SubCmd))] = m_NAtagCMHorseTrain + + +#------------------------------------------------------ # A5 27 坐骑提升 #tagCMHorseUp class tagCMHorseUp(Structure): @@ -10762,6 +12003,110 @@ m_NAtagCMHorseUp=tagCMHorseUp() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp + + +#------------------------------------------------------ +# A5 34 炼体突破 #tagCMLianTiLVUp + +class tagCMLianTiLVUp(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x34 + 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 = 0x34 + return + + def GetLength(self): + return sizeof(tagCMLianTiLVUp) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 34 炼体突破 //tagCMLianTiLVUp: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMLianTiLVUp=tagCMLianTiLVUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiLVUp.Cmd,m_NAtagCMLianTiLVUp.SubCmd))] = m_NAtagCMLianTiLVUp + + +#------------------------------------------------------ +# A5 33 炼体提升 #tagCMLianTiUp + +class tagCMLianTiUp(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("UseItemCnt", c_int), #消耗材料个数 + ("IsAutoBuy", c_ubyte), #是否自动购买 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x33 + 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 = 0x33 + self.UseItemCnt = 0 + self.IsAutoBuy = 0 + return + + def GetLength(self): + return sizeof(tagCMLianTiUp) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 33 炼体提升 //tagCMLianTiUp: + Cmd:%s, + SubCmd:%s, + UseItemCnt:%d, + IsAutoBuy:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.UseItemCnt, + self.IsAutoBuy + ) + return DumpString + + +m_NAtagCMLianTiUp=tagCMLianTiUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiUp.Cmd,m_NAtagCMLianTiUp.SubCmd))] = m_NAtagCMLianTiUp #------------------------------------------------------ @@ -13006,6 +14351,62 @@ m_NAtagCMPetClassUP=tagCMPetClassUP() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetClassUP.Cmd,m_NAtagCMPetClassUP.SubCmd))] = m_NAtagCMPetClassUP + + +#------------------------------------------------------ +# A7 05 宠物培养 #tagCMPetTrain + +class tagCMPetTrain(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TrainType", c_ubyte), #培养类型: 1-基础培养,2-特殊培养,3-百分比培养 + ("UseItemCnt", c_ushort), #消耗材料个数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA7 + self.SubCmd = 0x05 + 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 = 0xA7 + self.SubCmd = 0x05 + self.TrainType = 0 + self.UseItemCnt = 0 + return + + def GetLength(self): + return sizeof(tagCMPetTrain) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A7 05 宠物培养 //tagCMPetTrain: + Cmd:%s, + SubCmd:%s, + TrainType:%d, + UseItemCnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TrainType, + self.UseItemCnt + ) + return DumpString + + +m_NAtagCMPetTrain=tagCMPetTrain() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetTrain.Cmd,m_NAtagCMPetTrain.SubCmd))] = m_NAtagCMPetTrain #------------------------------------------------------ @@ -16478,6 +17879,390 @@ #------------------------------------------------------ +# B3 17 情戒解锁 #tagCMLoveRingUnlock + +class tagCMLoveRingUnlock(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x17 + 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 = 0x17 + return + + def GetLength(self): + return sizeof(tagCMLoveRingUnlock) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock + + +#------------------------------------------------------ +# B3 18 情戒升级 #tagCMLoveRingUp + +class tagCMLoveRingUp(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("UseItemCnt", c_int), #消耗材料个数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x18 + 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 = 0x18 + self.UseItemCnt = 0 + return + + def GetLength(self): + return sizeof(tagCMLoveRingUp) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp: + Cmd:%s, + SubCmd:%s, + UseItemCnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.UseItemCnt + ) + return DumpString + + +m_NAtagCMLoveRingUp=tagCMLoveRingUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp + + +#------------------------------------------------------ +# B3 15 离婚 #tagCMMarryBreak + +class tagCMMarryBreak(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BreakType", c_ubyte), # 0-和平离婚;1-强制离婚 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x15 + 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 = 0x15 + self.BreakType = 0 + return + + def GetLength(self): + return sizeof(tagCMMarryBreak) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 15 离婚 //tagCMMarryBreak: + Cmd:%s, + SubCmd:%s, + BreakType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BreakType + ) + return DumpString + + +m_NAtagCMMarryBreak=tagCMMarryBreak() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak + + +#------------------------------------------------------ +# B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks + +class tagCMMarryBuyFireworks(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PlayerIDA", c_int), # 喜糖所属玩家IDA + ("PlayerIDB", c_int), # 喜糖所属玩家IDB + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x14 + 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 = 0x14 + self.PlayerIDA = 0 + self.PlayerIDB = 0 + return + + def GetLength(self): + return sizeof(tagCMMarryBuyFireworks) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks: + Cmd:%s, + SubCmd:%s, + PlayerIDA:%d, + PlayerIDB:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PlayerIDA, + self.PlayerIDB + ) + return DumpString + + +m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks + + +#------------------------------------------------------ +# B3 13 吃喜糖 #tagCMMarryEatCandy + +class tagCMMarryEatCandy(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PlayerIDA", c_int), # 喜糖所属玩家IDA + ("PlayerIDB", c_int), # 喜糖所属玩家IDB + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x13 + 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 = 0x13 + self.PlayerIDA = 0 + self.PlayerIDB = 0 + return + + def GetLength(self): + return sizeof(tagCMMarryEatCandy) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy: + Cmd:%s, + SubCmd:%s, + PlayerIDA:%d, + PlayerIDB:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PlayerIDA, + self.PlayerIDB + ) + return DumpString + + +m_NAtagCMMarryEatCandy=tagCMMarryEatCandy() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy + + +#------------------------------------------------------ +# B3 11 提亲 #tagCMMarryReq + +class tagCMMarryReq(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TagPlayerID", c_int), # 目标玩家ID + ("BridePriceID", c_ubyte), # 聘礼ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x11 + 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 = 0x11 + self.TagPlayerID = 0 + self.BridePriceID = 0 + return + + def GetLength(self): + return sizeof(tagCMMarryReq) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 11 提亲 //tagCMMarryReq: + Cmd:%s, + SubCmd:%s, + TagPlayerID:%d, + BridePriceID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TagPlayerID, + self.BridePriceID + ) + return DumpString + + +m_NAtagCMMarryReq=tagCMMarryReq() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq + + +#------------------------------------------------------ +# B3 10 送礼物 #tagCMSendGifts + +class tagCMSendGifts(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TagPlayerID", c_int), # 目标玩家ID + ("GiftNum", c_ushort), # 赠送礼物编号 + ("GiftCount", c_int), # 赠送礼物数量 + ("IsAutoBuy", c_ubyte), # 是否自动购买 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x10 + 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 = 0x10 + self.TagPlayerID = 0 + self.GiftNum = 0 + self.GiftCount = 0 + self.IsAutoBuy = 0 + return + + def GetLength(self): + return sizeof(tagCMSendGifts) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 10 送礼物 //tagCMSendGifts: + Cmd:%s, + SubCmd:%s, + TagPlayerID:%d, + GiftNum:%d, + GiftCount:%d, + IsAutoBuy:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TagPlayerID, + self.GiftNum, + self.GiftCount, + self.IsAutoBuy + ) + return DumpString + + +m_NAtagCMSendGifts=tagCMSendGifts() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts + + +#------------------------------------------------------ # B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile class tagCMRecyclePriWoodPile(Structure): @@ -17936,6 +19721,322 @@ #------------------------------------------------------ +# C1 22 跨服排位竞猜 #tagCMChampionshipGuess + +class tagCMChampionshipGuess(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ZoneID", c_ubyte), #排位数据分区ID + ("GuessType", c_ubyte), #竞猜类型 8-8强;4-4强排位 + ("PlayerID", c_int), #目标玩家ID + ("GuessCount", c_ubyte), #投注/追加份数 + ("GuessRank", c_ubyte), # 竞猜名次,没有名次的竞猜默认0;1-代表第一名 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x22 + 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 = 0x22 + self.ZoneID = 0 + self.GuessType = 0 + self.PlayerID = 0 + self.GuessCount = 0 + self.GuessRank = 0 + return + + def GetLength(self): + return sizeof(tagCMChampionshipGuess) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 22 跨服排位竞猜 //tagCMChampionshipGuess: + Cmd:%s, + SubCmd:%s, + ZoneID:%d, + GuessType:%d, + PlayerID:%d, + GuessCount:%d, + GuessRank:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ZoneID, + self.GuessType, + self.PlayerID, + self.GuessCount, + self.GuessRank + ) + return DumpString + + +m_NAtagCMChampionshipGuess=tagCMChampionshipGuess() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipGuess.Cmd,m_NAtagCMChampionshipGuess.SubCmd))] = m_NAtagCMChampionshipGuess + + +#------------------------------------------------------ +# C1 20 跨服排位仙官申请 #tagCMChampionshipOfficialApply + +class tagCMChampionshipOfficialApply(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ZoneID", c_ubyte), #仙官数据分区ID + ("MainOfficialID", c_ushort), #界主官职ID + ("OfficialID", c_ushort), #申请官职ID + ("Cancel", c_ubyte), #是否取消申请,默认0-申请;1-取消申请 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x20 + 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 = 0x20 + self.ZoneID = 0 + self.MainOfficialID = 0 + self.OfficialID = 0 + self.Cancel = 0 + return + + def GetLength(self): + return sizeof(tagCMChampionshipOfficialApply) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 20 跨服排位仙官申请 //tagCMChampionshipOfficialApply: + Cmd:%s, + SubCmd:%s, + ZoneID:%d, + MainOfficialID:%d, + OfficialID:%d, + Cancel:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ZoneID, + self.MainOfficialID, + self.OfficialID, + self.Cancel + ) + return DumpString + + +m_NAtagCMChampionshipOfficialApply=tagCMChampionshipOfficialApply() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipOfficialApply.Cmd,m_NAtagCMChampionshipOfficialApply.SubCmd))] = m_NAtagCMChampionshipOfficialApply + + +#------------------------------------------------------ +# C1 21 跨服排位仙官挑战 #tagCMChampionshipOfficialChallenge + +class tagCMChampionshipOfficialChallenge(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ZoneID", c_ubyte), #仙官数据分区ID + ("MainOfficialID", c_ushort), #界主官职ID + ("OfficialID", c_ushort), #挑战的目标官职ID + ("PlayerID", c_int), #挑战时的目标玩家ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + 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 = 0xC1 + self.SubCmd = 0x21 + self.ZoneID = 0 + self.MainOfficialID = 0 + self.OfficialID = 0 + self.PlayerID = 0 + return + + def GetLength(self): + return sizeof(tagCMChampionshipOfficialChallenge) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 21 跨服排位仙官挑战 //tagCMChampionshipOfficialChallenge: + Cmd:%s, + SubCmd:%s, + ZoneID:%d, + MainOfficialID:%d, + OfficialID:%d, + PlayerID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ZoneID, + self.MainOfficialID, + self.OfficialID, + self.PlayerID + ) + return DumpString + + +m_NAtagCMChampionshipOfficialChallenge=tagCMChampionshipOfficialChallenge() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipOfficialChallenge.Cmd,m_NAtagCMChampionshipOfficialChallenge.SubCmd))] = m_NAtagCMChampionshipOfficialChallenge + + +#------------------------------------------------------ +# C1 23 跨服排位膜拜 #tagCMChampionshipWorship + +class tagCMChampionshipWorship(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ZoneID", c_ubyte), #仙官数据分区ID + ("PlayerID", c_int), #目标玩家ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x23 + 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 = 0x23 + self.ZoneID = 0 + self.PlayerID = 0 + return + + def GetLength(self): + return sizeof(tagCMChampionshipWorship) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 23 跨服排位膜拜 //tagCMChampionshipWorship: + Cmd:%s, + SubCmd:%s, + ZoneID:%d, + PlayerID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ZoneID, + self.PlayerID + ) + return DumpString + + +m_NAtagCMChampionshipWorship=tagCMChampionshipWorship() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipWorship.Cmd,m_NAtagCMChampionshipWorship.SubCmd))] = m_NAtagCMChampionshipWorship + + +#------------------------------------------------------ +# C1 09 跨服战场购买开启场次 #tagCMCrossBattlefieldBuyOpen + +class tagCMCrossBattlefieldBuyOpen(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Hour", c_ubyte), #战场开启时 + ("Minute", c_ubyte), #战场开启分 + ("Faction", c_ubyte), #阵营 1-红;2-蓝 + ("ServerOnly", c_ubyte), #是否仅本服玩家可加入,0-否,1-是 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x09 + 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 = 0x09 + self.Hour = 0 + self.Minute = 0 + self.Faction = 0 + self.ServerOnly = 0 + return + + def GetLength(self): + return sizeof(tagCMCrossBattlefieldBuyOpen) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 09 跨服战场购买开启场次 //tagCMCrossBattlefieldBuyOpen: + Cmd:%s, + SubCmd:%s, + Hour:%d, + Minute:%d, + Faction:%d, + ServerOnly:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Hour, + self.Minute, + self.Faction, + self.ServerOnly + ) + return DumpString + + +m_NAtagCMCrossBattlefieldBuyOpen=tagCMCrossBattlefieldBuyOpen() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossBattlefieldBuyOpen.Cmd,m_NAtagCMCrossBattlefieldBuyOpen.SubCmd))] = m_NAtagCMCrossBattlefieldBuyOpen + + +#------------------------------------------------------ # C1 06 跨服NPC对话 #tagCMCrossNPCTalk class tagCMCrossNPCTalk(Structure): @@ -18308,4 +20409,56 @@ m_NAtagCMExitCrossRealm=tagCMExitCrossRealm() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm \ No newline at end of file +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm + + +#------------------------------------------------------ +# C1 10 幸运云购购买 #tagCMLuckyCloudBuy + +class tagCMLuckyCloudBuy(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BuyCount", c_ushort), # 购买份数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x10 + 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 = 0x10 + self.BuyCount = 0 + return + + def GetLength(self): + return sizeof(tagCMLuckyCloudBuy) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 10 幸运云购购买 //tagCMLuckyCloudBuy: + Cmd:%s, + SubCmd:%s, + BuyCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BuyCount + ) + return DumpString + + +m_NAtagCMLuckyCloudBuy=tagCMLuckyCloudBuy() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLuckyCloudBuy.Cmd,m_NAtagCMLuckyCloudBuy.SubCmd))] = m_NAtagCMLuckyCloudBuy \ No newline at end of file -- Gitblit v1.8.0