From 2b3d5e31bafd7a9cd4b4738e38186ffed4cee5f6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 12 十一月 2019 16:58:20 +0800 Subject: [PATCH] 1111 装备评分公式增加参数(FinalHurt、FinalHurtReduce) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 3977 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 2,157 insertions(+), 1,820 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 1bae020..a406404 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -2121,6 +2121,58 @@ #------------------------------------------------------ +# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes + +class tagGCServerCreatFamilyTimes(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Times", c_int), #建盟次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA4 + self.SubCmd = 0x0D + 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 = 0xA4 + self.SubCmd = 0x0D + self.Times = 0 + return + + def GetLength(self): + return sizeof(tagGCServerCreatFamilyTimes) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes: + Cmd:%s, + SubCmd:%s, + Times:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Times + ) + return DumpString + + +m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes + + +#------------------------------------------------------ #A4 01 查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo class tagtMemberInfo(Structure): @@ -3371,21 +3423,17 @@ #------------------------------------------------------ -#A9 05 天梯竞技场每日奖励信息#tagGCHighLadderRewardInfo +# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo -class tagGCHighLadderRewardInfo(Structure): +class tagGCNotifyEquipClassEquip(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("hadGot", c_ubyte), #是否已领取 - ("Order", c_ushort), #奖励排名 + ("ItemID", c_int), + ("Star", c_ubyte), ] def __init__(self): self.Clear() - self.Cmd = 0xA9 - self.SubCmd = 0x05 return def ReadData(self, stringData, _pos=0, _len=0): @@ -3394,36 +3442,168 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA9 - self.SubCmd = 0x05 - self.hadGot = 0 - self.Order = 0 + self.ItemID = 0 + self.Star = 0 return def GetLength(self): - return sizeof(tagGCHighLadderRewardInfo) + return sizeof(tagGCNotifyEquipClassEquip) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''//A9 05 天梯竞技场每日奖励信息//tagGCHighLadderRewardInfo: - Cmd:%s, - SubCmd:%s, - hadGot:%d, - Order:%d + DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo: + ItemID:%d, + Star:%d '''\ %( - self.Cmd, - self.SubCmd, - self.hadGot, - self.Order + self.ItemID, + self.Star ) return DumpString -m_NAtagGCHighLadderRewardInfo=tagGCHighLadderRewardInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHighLadderRewardInfo.Cmd,m_NAtagGCHighLadderRewardInfo.SubCmd))] = m_NAtagGCHighLadderRewardInfo +class tagGCNotifyEquipDetailInfo(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + ItemID = 0 #(DWORD ItemID) + Star = 0 #(BYTE Star)//星级 + PlusLV = 0 #(WORD PlusLV)//强化等级 + EvolveLV = 0 #(BYTE EvolveLV)//进化等级 + WashLV = 0 #(BYTE WashLV)//洗练等级 + WashValueCount = 0 #(BYTE WashValueCount) + WashValueList = list() #(vector<WORD> WashValueList)//洗练值 + StoneIDCount = 0 #(BYTE StoneIDCount) + StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石 + ClassEquipCount = 0 #(BYTE ClassEquipCount) + ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.WashValueCount): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.WashValueList.append(value) + self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.StoneIDCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.StoneIDList.append(value) + self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ClassEquipCount): + temClassEquipList = tagGCNotifyEquipClassEquip() + _pos = temClassEquipList.ReadData(_lpData, _pos) + self.ClassEquipList.append(temClassEquipList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + self.ItemGUID = "" + self.ItemID = 0 + self.Star = 0 + self.PlusLV = 0 + self.EvolveLV = 0 + self.WashLV = 0 + self.WashValueCount = 0 + self.WashValueList = list() + self.StoneIDCount = 0 + self.StoneIDList = list() + self.ClassEquipCount = 0 + self.ClassEquipList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + length += 4 + length += 1 + length += 2 + length += 1 + length += 1 + length += 1 + length += 2 * self.WashValueCount + length += 1 + length += 4 * self.StoneIDCount + length += 1 + for i in range(self.ClassEquipCount): + length += self.ClassEquipList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteBYTE(data, self.Star) + data = CommFunc.WriteWORD(data, self.PlusLV) + data = CommFunc.WriteBYTE(data, self.EvolveLV) + data = CommFunc.WriteBYTE(data, self.WashLV) + data = CommFunc.WriteBYTE(data, self.WashValueCount) + for i in range(self.WashValueCount): + data = CommFunc.WriteWORD(data, self.WashValueList[i]) + data = CommFunc.WriteBYTE(data, self.StoneIDCount) + for i in range(self.StoneIDCount): + data = CommFunc.WriteDWORD(data, self.StoneIDList[i]) + data = CommFunc.WriteBYTE(data, self.ClassEquipCount) + for i in range(self.ClassEquipCount): + data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s, + ItemID:%d, + Star:%d, + PlusLV:%d, + EvolveLV:%d, + WashLV:%d, + WashValueCount:%d, + WashValueList:%s, + StoneIDCount:%d, + StoneIDList:%s, + ClassEquipCount:%d, + ClassEquipList:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID, + self.ItemID, + self.Star, + self.PlusLV, + self.EvolveLV, + self.WashLV, + self.WashValueCount, + "...", + self.StoneIDCount, + "...", + self.ClassEquipCount, + "..." + ) + return DumpString + + +m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo #------------------------------------------------------ @@ -4188,124 +4368,6 @@ #------------------------------------------------------ -# A9 07 定时商店刷新倒计时 #tagGCShopRefreshTimeList - -class tagGCShopRefreshTime(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ShopID", c_int), # 商店ID - ("RemainSecond", c_int), # 多少秒后刷新 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA9 - 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 = 0xA9 - self.SubCmd = 0x07 - self.ShopID = 0 - self.RemainSecond = 0 - return - - def GetLength(self): - return sizeof(tagGCShopRefreshTime) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A9 07 定时商店刷新倒计时 //tagGCShopRefreshTimeList: - Cmd:%s, - SubCmd:%s, - ShopID:%d, - RemainSecond:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ShopID, - self.RemainSecond - ) - return DumpString - - -class tagGCShopRefreshTimeList(Structure): - Head = tagHead() - ShopCnt = 0 #(BYTE ShopCnt)//商店信息个数 - ShopTimeInfoList = list() #(vector<tagGCShopRefreshTime> ShopTimeInfoList)//商店信息列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA9 - self.Head.SubCmd = 0x07 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.ShopCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.ShopCnt): - temShopTimeInfoList = tagGCShopRefreshTime() - _pos = temShopTimeInfoList.ReadData(_lpData, _pos) - self.ShopTimeInfoList.append(temShopTimeInfoList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA9 - self.Head.SubCmd = 0x07 - self.ShopCnt = 0 - self.ShopTimeInfoList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.ShopCnt): - length += self.ShopTimeInfoList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.ShopCnt) - for i in range(self.ShopCnt): - data = CommFunc.WriteString(data, self.ShopTimeInfoList[i].GetLength(), self.ShopTimeInfoList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ShopCnt:%d, - ShopTimeInfoList:%s - '''\ - %( - self.Head.OutputString(), - self.ShopCnt, - "..." - ) - return DumpString - - -m_NAtagGCShopRefreshTimeList=tagGCShopRefreshTimeList() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCShopRefreshTimeList.Head.Cmd,m_NAtagGCShopRefreshTimeList.Head.SubCmd))] = m_NAtagGCShopRefreshTimeList - - -#------------------------------------------------------ # A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo class tagGCStoreServerBuyCnt(Structure): @@ -4767,6 +4829,58 @@ #------------------------------------------------------ +# AC 01 仙盟联赛信息通知 #tagGCFamilyWarInfo + +class tagGCFamilyWarInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("WorldLV", c_ushort), # 当前进行中的联赛世界等级 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAC + self.SubCmd = 0x01 + 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 = 0xAC + self.SubCmd = 0x01 + self.WorldLV = 0 + return + + def GetLength(self): + return sizeof(tagGCFamilyWarInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AC 01 仙盟联赛信息通知 //tagGCFamilyWarInfo: + Cmd:%s, + SubCmd:%s, + WorldLV:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.WorldLV + ) + return DumpString + + +m_NAtagGCFamilyWarInfo=tagGCFamilyWarInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyWarInfo.Cmd,m_NAtagGCFamilyWarInfo.SubCmd))] = m_NAtagGCFamilyWarInfo + + +#------------------------------------------------------ # AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo class tagGCFeastRedPacketDay(Structure): @@ -5096,171 +5210,55 @@ #------------------------------------------------------ -# AC 01 通知领地争夺占领情况 #tagGCManorWarInfo +# AC 07 骑宠Boss信息 #tagGCHorsePetBossInfo -class tagGCManorInfo(Structure): - Head = tagHead() - MapID = 0 #(DWORD MapID)// 领地地图id - FamilyID = 0 #(DWORD FamilyID)// 占领战盟id - FNameLen = 0 #(BYTE FNameLen)// 战盟名字长度 - FamilyName = "" #(String FamilyName)// 战盟名 size = FNameLen - LNameLen = 0 #(BYTE LNameLen)// 盟主名字长度 - LeaderName = "" #(String LeaderName)// 盟主名 size = LNameLen - OccupyDays = 0 #(WORD OccupyDays)// 连续占领天数 - LastFamilyID = 0 #(DWORD LastFamilyID)// 上次占领的战盟id - data = None +class tagGCHorsePetBossInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("IsEnd", c_int), # 是否已结束(按位代表对应线路是否结束) + ] def __init__(self): self.Clear() - self.Head.Cmd = 0xAC - self.Head.SubCmd = 0x01 + self.Cmd = 0xAC + self.SubCmd = 0x07 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.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.FNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FNameLen) - self.LNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LNameLen) - self.OccupyDays,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.LastFamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - 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 = 0xAC - self.Head.SubCmd = 0x01 - self.MapID = 0 - self.FamilyID = 0 - self.FNameLen = 0 - self.FamilyName = "" - self.LNameLen = 0 - self.LeaderName = "" - self.OccupyDays = 0 - self.LastFamilyID = 0 + self.Cmd = 0xAC + self.SubCmd = 0x07 + self.IsEnd = 0 return def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 4 - length += 4 - length += 1 - length += len(self.FamilyName) - length += 1 - length += len(self.LeaderName) - length += 2 - length += 4 - - return length + return sizeof(tagGCHorsePetBossInfo) def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteDWORD(data, self.MapID) - data = CommFunc.WriteDWORD(data, self.FamilyID) - data = CommFunc.WriteBYTE(data, self.FNameLen) - data = CommFunc.WriteString(data, self.FNameLen, self.FamilyName) - data = CommFunc.WriteBYTE(data, self.LNameLen) - data = CommFunc.WriteString(data, self.LNameLen, self.LeaderName) - data = CommFunc.WriteWORD(data, self.OccupyDays) - data = CommFunc.WriteDWORD(data, self.LastFamilyID) - return data + return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = ''' - Head:%s, - MapID:%d, - FamilyID:%d, - FNameLen:%d, - FamilyName:%s, - LNameLen:%d, - LeaderName:%s, - OccupyDays:%d, - LastFamilyID:%d + DumpString = '''// AC 07 骑宠Boss信息 //tagGCHorsePetBossInfo: + Cmd:%s, + SubCmd:%s, + IsEnd:%d '''\ %( - self.Head.OutputString(), - self.MapID, - self.FamilyID, - self.FNameLen, - self.FamilyName, - self.LNameLen, - self.LeaderName, - self.OccupyDays, - self.LastFamilyID + self.Cmd, + self.SubCmd, + self.IsEnd ) return DumpString -class tagGCManorWarInfo(Structure): - Head = tagHead() - ManorCnt = 0 #(BYTE ManorCnt)//领地个数 - ManorInfoList = list() #(vector<tagGCManorInfo> ManorInfoList)//领地信息列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAC - self.Head.SubCmd = 0x01 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.ManorCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.ManorCnt): - temManorInfoList = tagGCManorInfo() - _pos = temManorInfoList.ReadData(_lpData, _pos) - self.ManorInfoList.append(temManorInfoList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAC - self.Head.SubCmd = 0x01 - self.ManorCnt = 0 - self.ManorInfoList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.ManorCnt): - length += self.ManorInfoList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.ManorCnt) - for i in range(self.ManorCnt): - data = CommFunc.WriteString(data, self.ManorInfoList[i].GetLength(), self.ManorInfoList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ManorCnt:%d, - ManorInfoList:%s - '''\ - %( - self.Head.OutputString(), - self.ManorCnt, - "..." - ) - return DumpString - - -m_NAtagGCManorWarInfo=tagGCManorWarInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCManorWarInfo.Head.Cmd,m_NAtagGCManorWarInfo.Head.SubCmd))] = m_NAtagGCManorWarInfo +m_NAtagGCHorsePetBossInfo=tagGCHorsePetBossInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHorsePetBossInfo.Cmd,m_NAtagGCHorsePetBossInfo.SubCmd))] = m_NAtagGCHorsePetBossInfo #------------------------------------------------------ @@ -5725,132 +5723,6 @@ m_NAtagGCXMZZFightInfo=tagGCXMZZFightInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXMZZFightInfo.Head.Cmd,m_NAtagGCXMZZFightInfo.Head.SubCmd))] = m_NAtagGCXMZZFightInfo - - -#------------------------------------------------------ -# AD 01 特惠活动信息 #tagGCTeHuiActivityInfoList - -class tagGCTeHuiActivityInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActivityType", c_ubyte), # 活动类型 - ("ActivityValue", c_int), # 活动值 - ("StartDate", c_int), # 开始时间time - ("EndDate", c_int), # 结束时间time - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAD - self.SubCmd = 0x01 - 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 = 0xAD - self.SubCmd = 0x01 - self.ActivityType = 0 - self.ActivityValue = 0 - self.StartDate = 0 - self.EndDate = 0 - return - - def GetLength(self): - return sizeof(tagGCTeHuiActivityInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AD 01 特惠活动信息 //tagGCTeHuiActivityInfoList: - Cmd:%s, - SubCmd:%s, - ActivityType:%d, - ActivityValue:%d, - StartDate:%d, - EndDate:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActivityType, - self.ActivityValue, - self.StartDate, - self.EndDate - ) - return DumpString - - -class tagGCTeHuiActivityInfoList(Structure): - Head = tagHead() - ActivityCount = 0 #(BYTE ActivityCount)//活动信息个数 - ActivityInfoList = list() #(vector<tagGCTeHuiActivityInfo> ActivityInfoList)//活动信息列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAD - self.Head.SubCmd = 0x01 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.ActivityCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.ActivityCount): - temActivityInfoList = tagGCTeHuiActivityInfo() - _pos = temActivityInfoList.ReadData(_lpData, _pos) - self.ActivityInfoList.append(temActivityInfoList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAD - self.Head.SubCmd = 0x01 - self.ActivityCount = 0 - self.ActivityInfoList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.ActivityCount): - length += self.ActivityInfoList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.ActivityCount) - for i in range(self.ActivityCount): - data = CommFunc.WriteString(data, self.ActivityInfoList[i].GetLength(), self.ActivityInfoList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ActivityCount:%d, - ActivityInfoList:%s - '''\ - %( - self.Head.OutputString(), - self.ActivityCount, - "..." - ) - return DumpString - - -m_NAtagGCTeHuiActivityInfoList=tagGCTeHuiActivityInfoList() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeHuiActivityInfoList.Head.Cmd,m_NAtagGCTeHuiActivityInfoList.Head.SubCmd))] = m_NAtagGCTeHuiActivityInfoList #------------------------------------------------------ @@ -6901,6 +6773,162 @@ #------------------------------------------------------ +# B3 11 聊天缓存通知 #tagGCTalkCache + +class tagGCTalkCacheInfo(Structure): + ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name)//size = SrcNameLen + PlayerID = 0 #(DWORD PlayerID) + Time = 0 #(DWORD Time) + Len = 0 #(WORD Len) + Content = "" #(String Content)//size = Len + Extras = "" #(char Extras[256])//附加值列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len) + self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256) + return _pos + + def Clear(self): + self.ChannelType = 0 + self.NameLen = 0 + self.Name = "" + self.PlayerID = 0 + self.Time = 0 + self.Len = 0 + self.Content = "" + self.Extras = "" + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += len(self.Name) + length += 4 + length += 4 + length += 2 + length += len(self.Content) + length += 256 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.ChannelType) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.Name) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteDWORD(data, self.Time) + data = CommFunc.WriteWORD(data, self.Len) + data = CommFunc.WriteString(data, self.Len, self.Content) + data = CommFunc.WriteString(data, 256, self.Extras) + return data + + def OutputString(self): + DumpString = ''' + ChannelType:%d, + NameLen:%d, + Name:%s, + PlayerID:%d, + Time:%d, + Len:%d, + Content:%s, + Extras:%s + '''\ + %( + self.ChannelType, + self.NameLen, + self.Name, + self.PlayerID, + self.Time, + self.Len, + self.Content, + self.Extras + ) + return DumpString + + +class tagGCTalkCache(Structure): + Head = tagHead() + Count = 0 #(WORD Count) + InfoList = list() #(vector<tagGCTalkCacheInfo> InfoList)//size = Count + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x11 + 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): + temInfoList = tagGCTalkCacheInfo() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x11 + self.Count = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + for i in range(self.Count): + length += self.InfoList[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.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagGCTalkCache=tagGCTalkCache() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache + + +#------------------------------------------------------ # B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo class tagGCAddAuctionItem(Structure): @@ -7091,6 +7119,7 @@ ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 data = None @@ -7107,6 +7136,7 @@ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) return _pos @@ -7118,6 +7148,7 @@ self.ItemCount = 0 self.AddTime = "" self.BidderPrice = 0 + self.BiddingTime = "" self.UserDataLen = 0 self.UserData = "" return @@ -7130,6 +7161,7 @@ length += 2 length += 19 length += 2 + length += 19 length += 2 length += len(self.UserData) @@ -7143,6 +7175,7 @@ data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) return data @@ -7155,6 +7188,7 @@ ItemCount:%d, AddTime:%s, BidderPrice:%d, + BiddingTime:%s, UserDataLen:%d, UserData:%s '''\ @@ -7165,6 +7199,7 @@ self.ItemCount, self.AddTime, self.BidderPrice, + self.BiddingTime, self.UserDataLen, self.UserData ) @@ -7247,6 +7282,7 @@ ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 data = None @@ -7263,6 +7299,7 @@ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) return _pos @@ -7274,6 +7311,7 @@ self.ItemCount = 0 self.AddTime = "" self.BidderPrice = 0 + self.BiddingTime = "" self.UserDataLen = 0 self.UserData = "" return @@ -7286,6 +7324,7 @@ length += 2 length += 19 length += 2 + length += 19 length += 2 length += len(self.UserData) @@ -7299,6 +7338,7 @@ data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) return data @@ -7311,6 +7351,7 @@ ItemCount:%d, AddTime:%s, BidderPrice:%d, + BiddingTime:%s, UserDataLen:%d, UserData:%s '''\ @@ -7321,6 +7362,7 @@ self.ItemCount, self.AddTime, self.BidderPrice, + self.BiddingTime, self.UserDataLen, self.UserData ) @@ -7480,6 +7522,7 @@ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss BidderID = 0 #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 data = None @@ -7497,6 +7540,7 @@ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) return _pos @@ -7509,6 +7553,7 @@ self.AddTime = "" self.BidderID = 0 self.BidderPrice = 0 + self.BiddingTime = "" self.UserDataLen = 0 self.UserData = "" return @@ -7522,6 +7567,7 @@ length += 19 length += 4 length += 2 + length += 19 length += 2 length += len(self.UserData) @@ -7536,6 +7582,7 @@ data = CommFunc.WriteString(data, 19, self.AddTime) data = CommFunc.WriteDWORD(data, self.BidderID) data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) return data @@ -7549,6 +7596,7 @@ AddTime:%s, BidderID:%d, BidderPrice:%d, + BiddingTime:%s, UserDataLen:%d, UserData:%s '''\ @@ -7560,6 +7608,7 @@ self.AddTime, self.BidderID, self.BidderPrice, + self.BiddingTime, self.UserDataLen, self.UserData ) @@ -7740,6 +7789,74 @@ #------------------------------------------------------ +# B5 11 部位升星自动购买拍品消耗信息 #tagGCEquipStarAutoBuyCostInfo + +class tagGCEquipStarAutoBuyCostInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ClassLV", c_ubyte), # 当前要升星的境界阶 + ("EquipPlace", c_ubyte), #当前要升星的装备位 + ("CurStar", c_ubyte), #当前星级 + ("CurRate", c_ubyte), #当前自动购买后的总概率,不满100则代表拍品库存不足 + ("AutoBuyCostMoney", c_ushort), #自动购买所需总消耗 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB5 + 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 = 0xB5 + self.SubCmd = 0x11 + self.ClassLV = 0 + self.EquipPlace = 0 + self.CurStar = 0 + self.CurRate = 0 + self.AutoBuyCostMoney = 0 + return + + def GetLength(self): + return sizeof(tagGCEquipStarAutoBuyCostInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B5 11 部位升星自动购买拍品消耗信息 //tagGCEquipStarAutoBuyCostInfo: + Cmd:%s, + SubCmd:%s, + ClassLV:%d, + EquipPlace:%d, + CurStar:%d, + CurRate:%d, + AutoBuyCostMoney:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ClassLV, + self.EquipPlace, + self.CurStar, + self.CurRate, + self.AutoBuyCostMoney + ) + return DumpString + + +m_NAtagGCEquipStarAutoBuyCostInfo=tagGCEquipStarAutoBuyCostInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCEquipStarAutoBuyCostInfo.Cmd,m_NAtagGCEquipStarAutoBuyCostInfo.SubCmd))] = m_NAtagGCEquipStarAutoBuyCostInfo + + +#------------------------------------------------------ # B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo class tagGCFamilyAuctionItem(Structure): @@ -7749,6 +7866,7 @@ ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 FamilyPlayerIDLen = 0 #(WORD FamilyPlayerIDLen) @@ -7768,6 +7886,7 @@ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos) @@ -7782,6 +7901,7 @@ self.ItemCount = 0 self.AddTime = "" self.BidderPrice = 0 + self.BiddingTime = "" self.UserDataLen = 0 self.UserData = "" self.FamilyPlayerIDLen = 0 @@ -7797,6 +7917,7 @@ length += 2 length += 19 length += 2 + length += 19 length += 2 length += len(self.UserData) length += 2 @@ -7813,6 +7934,7 @@ data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen) @@ -7828,6 +7950,7 @@ ItemCount:%d, AddTime:%s, BidderPrice:%d, + BiddingTime:%s, UserDataLen:%d, UserData:%s, FamilyPlayerIDLen:%d, @@ -7841,6 +7964,7 @@ self.ItemCount, self.AddTime, self.BidderPrice, + self.BiddingTime, self.UserDataLen, self.UserData, self.FamilyPlayerIDLen, @@ -7926,6 +8050,7 @@ ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 data = None @@ -7942,6 +8067,7 @@ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) return _pos @@ -7953,6 +8079,7 @@ self.ItemCount = 0 self.AddTime = "" self.BidderPrice = 0 + self.BiddingTime = "" self.UserDataLen = 0 self.UserData = "" return @@ -7965,6 +8092,7 @@ length += 2 length += 19 length += 2 + length += 19 length += 2 length += len(self.UserData) @@ -7978,6 +8106,7 @@ data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) return data @@ -7990,6 +8119,7 @@ ItemCount:%d, AddTime:%s, BidderPrice:%d, + BiddingTime:%s, UserDataLen:%d, UserData:%s '''\ @@ -8000,6 +8130,7 @@ self.ItemCount, self.AddTime, self.BidderPrice, + self.BiddingTime, self.UserDataLen, self.UserData ) @@ -8258,6 +8389,7 @@ AddTime = "" #(char AddTime[19])//上架时间 BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格 + BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss data = None def __init__(self): @@ -8271,6 +8403,7 @@ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) return _pos def Clear(self): @@ -8279,6 +8412,7 @@ self.AddTime = "" self.BidderID = 0 self.BidderPrice = 0 + self.BiddingTime = "" return def GetLength(self): @@ -8288,6 +8422,7 @@ length += 19 length += 4 length += 4 + length += 19 return length @@ -8298,6 +8433,7 @@ data = CommFunc.WriteString(data, 19, self.AddTime) data = CommFunc.WriteDWORD(data, self.BidderID) data = CommFunc.WriteDWORD(data, self.BidderPrice) + data = CommFunc.WriteString(data, 19, self.BiddingTime) return data def OutputString(self): @@ -8306,14 +8442,16 @@ AuctionType:%d, AddTime:%s, BidderID:%d, - BidderPrice:%d + BidderPrice:%d, + BiddingTime:%s '''\ %( self.ItemGUID, self.AuctionType, self.AddTime, self.BidderID, - self.BidderPrice + self.BidderPrice, + self.BiddingTime ) return DumpString @@ -10615,6 +10753,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("IsRobot", c_ubyte), # 是否匹配机器人 ] def __init__(self): @@ -10631,6 +10770,7 @@ def Clear(self): self.Cmd = 0xC0 self.SubCmd = 0x02 + self.IsRobot = 0 return def GetLength(self): @@ -10642,11 +10782,13 @@ def OutputString(self): DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch: Cmd:%s, - SubCmd:%s + SubCmd:%s, + IsRobot:%d '''\ %( self.Cmd, - self.SubCmd + self.SubCmd, + self.IsRobot ) return DumpString @@ -12763,6 +12905,8 @@ _fields_ = [ ("ItemID", c_int), #果实物品ID ("EatCnt", c_ushort), #已使用个数 + ("ItemAddCnt", c_int), #增幅丹增加上限 + ("ItemBreakCnt", c_int), #增幅丹突破次数 ] def __init__(self): @@ -12777,6 +12921,8 @@ def Clear(self): self.ItemID = 0 self.EatCnt = 0 + self.ItemAddCnt = 0 + self.ItemBreakCnt = 0 return def GetLength(self): @@ -12788,11 +12934,15 @@ def OutputString(self): DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList: ItemID:%d, - EatCnt:%d + EatCnt:%d, + ItemAddCnt:%d, + ItemBreakCnt:%d '''\ %( self.ItemID, - self.EatCnt + self.EatCnt, + self.ItemAddCnt, + self.ItemBreakCnt ) return DumpString @@ -12928,6 +13078,7 @@ ("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家 ("KillCnt", c_int), #击杀次数 ("ItemAddCnt", c_int), #物品增加次数 + ("BuyCnt", c_ubyte), #购买次数 ] def __init__(self): @@ -12943,6 +13094,7 @@ self.BossType = 0 self.KillCnt = 0 self.ItemAddCnt = 0 + self.BuyCnt = 0 return def GetLength(self): @@ -12955,12 +13107,14 @@ DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt: BossType:%d, KillCnt:%d, - ItemAddCnt:%d + ItemAddCnt:%d, + BuyCnt:%d '''\ %( self.BossType, self.KillCnt, - self.ItemAddCnt + self.ItemAddCnt, + self.BuyCnt ) return DumpString @@ -13393,6 +13547,8 @@ _fields_ = [ ("ActionID", c_int), # ID ("DayFinishCnt", c_ushort), # 今日已完成次数 + ("DayBuyTimes", c_ubyte), # 今日购买次数 + ("DayItemTimes", c_ubyte), # 今日物品增加次数 ("WeekFinishCnt", c_int), # 本周已完成次数 ] @@ -13408,6 +13564,8 @@ def Clear(self): self.ActionID = 0 self.DayFinishCnt = 0 + self.DayBuyTimes = 0 + self.DayItemTimes = 0 self.WeekFinishCnt = 0 return @@ -13421,11 +13579,15 @@ DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt: ActionID:%d, DayFinishCnt:%d, + DayBuyTimes:%d, + DayItemTimes:%d, WeekFinishCnt:%d '''\ %( self.ActionID, self.DayFinishCnt, + self.DayBuyTimes, + self.DayItemTimes, self.WeekFinishCnt ) return DumpString @@ -13942,6 +14104,73 @@ #------------------------------------------------------ +# A3 B2 装备部位星级套装激活信息 #tagMCEquipPartSuiteActivateInfo + +class tagMCEquipPartSuiteActivateInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + SuiteActivateStateInfo = list() #(vector<DWORD> SuiteActivateStateInfo)//激活状态值列表,每个数按位存31个激活索引,每个位代表对应的激活索引是否已激活 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xB2 + 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.ReadDWORD(_lpData,_pos) + self.SuiteActivateStateInfo.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xB2 + self.Count = 0 + self.SuiteActivateStateInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 * 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.WriteDWORD(data, self.SuiteActivateStateInfo[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + SuiteActivateStateInfo:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCEquipPartSuiteActivateInfo=tagMCEquipPartSuiteActivateInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteActivateInfo.Head.Cmd,m_NAtagMCEquipPartSuiteActivateInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteActivateInfo + + +#------------------------------------------------------ # A3 BB 装备位洗练属性信息 #tagMCEquipPartXLAttrInfo class tagMCEquipPartXLAttrValue(Structure): @@ -14111,6 +14340,254 @@ m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo + + +#------------------------------------------------------ +# A3 07 缥缈奇遇信息 #tagMCFairyAdventuresInfo + +class tagMCFairyAdventuresData(Structure): + _pack_ = 1 + _fields_ = [ + ("EventID", c_ubyte), + ("Gear", c_ubyte), #第几档 + ("Condition", c_int), #条件 + ] + + 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.EventID = 0 + self.Gear = 0 + self.Condition = 0 + return + + def GetLength(self): + return sizeof(tagMCFairyAdventuresData) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 07 缥缈奇遇信息 //tagMCFairyAdventuresInfo: + EventID:%d, + Gear:%d, + Condition:%d + '''\ + %( + self.EventID, + self.Gear, + self.Condition + ) + return DumpString + + +class tagMCFairyAdventuresInfo(Structure): + Head = tagHead() + Cnt = 0 #(BYTE Cnt) + InfoList = list() #(vector<tagMCFairyAdventuresData> InfoList)// 信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x07 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Cnt): + temInfoList = tagMCFairyAdventuresData() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x07 + self.Cnt = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Cnt): + length += self.InfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Cnt) + for i in range(self.Cnt): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Cnt:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Cnt, + "..." + ) + return DumpString + + +m_NAtagMCFairyAdventuresInfo=tagMCFairyAdventuresInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyAdventuresInfo.Head.Cmd,m_NAtagMCFairyAdventuresInfo.Head.SubCmd))] = m_NAtagMCFairyAdventuresInfo + + +#------------------------------------------------------ +# A3 06 缥缈仙域信息 #tagMCFairyDomainInfo + +class tagMCFairyDomainEvent(Structure): + _pack_ = 1 + _fields_ = [ + ("EventID", c_ushort), #事件ID + ("EventState", c_ubyte), #事件状态 1-可拜访 2-拜访中 3-已拜访 + ] + + 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.EventID = 0 + self.EventState = 0 + return + + def GetLength(self): + return sizeof(tagMCFairyDomainEvent) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 06 缥缈仙域信息 //tagMCFairyDomainInfo: + EventID:%d, + EventState:%d + '''\ + %( + self.EventID, + self.EventState + ) + return DumpString + + +class tagMCFairyDomainInfo(Structure): + Head = tagHead() + IsAll = 0 #(BYTE IsAll)//是否全部 + State = 0 #(BYTE State)//0-未寻访 1-寻访中 2-任务标记可寻访 + VisitCnt = 0 #(DWORD VisitCnt)//寻访次数 + Energy = 0 #(WORD Energy)//体力 + Count = 0 #(BYTE Count)// 信息个数 + InfoList = list() #(vector<tagMCFairyDomainEvent> InfoList)// 信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x06 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.VisitCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temInfoList = tagMCFairyDomainEvent() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x06 + self.IsAll = 0 + self.State = 0 + self.VisitCnt = 0 + self.Energy = 0 + self.Count = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 4 + length += 2 + length += 1 + for i in range(self.Count): + length += self.InfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.IsAll) + data = CommFunc.WriteBYTE(data, self.State) + data = CommFunc.WriteDWORD(data, self.VisitCnt) + data = CommFunc.WriteWORD(data, self.Energy) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + IsAll:%d, + State:%d, + VisitCnt:%d, + Energy:%d, + Count:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.IsAll, + self.State, + self.VisitCnt, + self.Energy, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCFairyDomainInfo=tagMCFairyDomainInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyDomainInfo.Head.Cmd,m_NAtagMCFairyDomainInfo.Head.SubCmd))] = m_NAtagMCFairyDomainInfo #------------------------------------------------------ @@ -15107,12 +15584,115 @@ #------------------------------------------------------ -# A3 12 通知玩家法宝信息 #tagMCMagicWeaponData +# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord -class tagMCMagicWeaponData(Structure): +class tagMCHistoryReChargeAwardRecord(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("AwardGetRecord", c_int), # 按二进制位标示领取记录 配置奖励ID代表第几位 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x28 + 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 = 0x28 + self.AwardGetRecord = 0 + return + + def GetLength(self): + return sizeof(tagMCHistoryReChargeAwardRecord) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 28 历史累积充值奖励领取记录 //tagMCHistoryReChargeAwardRecord: + Cmd:%s, + SubCmd:%s, + AwardGetRecord:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.AwardGetRecord + ) + return DumpString + + +m_NAtagMCHistoryReChargeAwardRecord=tagMCHistoryReChargeAwardRecord() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHistoryReChargeAwardRecord.Cmd,m_NAtagMCHistoryReChargeAwardRecord.SubCmd))] = m_NAtagMCHistoryReChargeAwardRecord + + +#------------------------------------------------------ +# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData + +class tagMCHorsePetSkinInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Type", c_ubyte), # 1-坐骑 2-灵宠 + ("ID", c_int), # 对应坐骑表灵宠表ID + ("Exp", c_int), #经验 + ("SkinLV", c_ubyte), #觉醒等级 + ("SkinIndex", 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.Type = 0 + self.ID = 0 + self.Exp = 0 + self.SkinLV = 0 + self.SkinIndex = 0 + return + + def GetLength(self): + return sizeof(tagMCHorsePetSkinInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData: + Type:%d, + ID:%d, + Exp:%d, + SkinLV:%d, + SkinIndex:%d + '''\ + %( + self.Type, + self.ID, + self.Exp, + self.SkinLV, + self.SkinIndex + ) + return DumpString + + +class tagMCHorsePetSkinData(Structure): Head = tagHead() Num = 0 #(BYTE Num)//个数 - MagicWeaponID = list() #(vector<DWORD> MagicWeaponID)// 已激活的法宝ID列表 + InfoList = list() #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表 data = None def __init__(self): @@ -15126,8 +15706,9 @@ _pos = self.Head.ReadData(_lpData, _pos) self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Num): - value,_pos=CommFunc.ReadDWORD(_lpData,_pos) - self.MagicWeaponID.append(value) + temInfoList = tagMCHorsePetSkinInfo() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) return _pos def Clear(self): @@ -15136,14 +15717,15 @@ self.Head.Cmd = 0xA3 self.Head.SubCmd = 0x12 self.Num = 0 - self.MagicWeaponID = list() + self.InfoList = list() return def GetLength(self): length = 0 length += self.Head.GetLength() length += 1 - length += 4 * self.Num + for i in range(self.Num): + length += self.InfoList[i].GetLength() return length @@ -15152,14 +15734,14 @@ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) data = CommFunc.WriteBYTE(data, self.Num) for i in range(self.Num): - data = CommFunc.WriteDWORD(data, self.MagicWeaponID[i]) + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) return data def OutputString(self): DumpString = ''' Head:%s, Num:%d, - MagicWeaponID:%s + InfoList:%s '''\ %( self.Head.OutputString(), @@ -15169,8 +15751,8 @@ return DumpString -m_NAtagMCMagicWeaponData=tagMCMagicWeaponData() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData +m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData #------------------------------------------------------ @@ -15182,7 +15764,6 @@ ("MWID", c_int), ("LV", c_ubyte), ("Exp", c_int), - ("State", c_ubyte), #是否点击法宝认主 ("FBPassLV", c_ubyte), #副本关卡 ("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝) ] @@ -15200,7 +15781,6 @@ self.MWID = 0 self.LV = 0 self.Exp = 0 - self.State = 0 self.FBPassLV = 0 self.IsWear = 0 return @@ -15216,7 +15796,6 @@ MWID:%d, LV:%d, Exp:%d, - State:%d, FBPassLV:%d, IsWear:%d '''\ @@ -15224,7 +15803,6 @@ self.MWID, self.LV, self.Exp, - self.State, self.FBPassLV, self.IsWear ) @@ -15717,16 +16295,13 @@ #------------------------------------------------------ -# A3 53 法宝特权数据 #tagMCMWPrivilegeDataInfo +# A3 25 NPC已攻击次数信息 #tagMCNPCAttackCountInfo -class tagMCMWPrivilegeData(Structure): +class tagMCNPCAttackCount(Structure): _pack_ = 1 _fields_ = [ - ("PriID", c_int), # 特权ID - ("State", c_ubyte), #激活状态 - ("CurValue", c_int), #当前总进度 - ("GotValue", c_int), #已领取进度 - ("ItemAwardState", c_ubyte), #物品奖励是否已领取 + ("NPCID", c_int), + ("AttackCount", c_ubyte), #已攻击次数 ] def __init__(self): @@ -15739,47 +16314,38 @@ return _pos + self.GetLength() def Clear(self): - self.PriID = 0 - self.State = 0 - self.CurValue = 0 - self.GotValue = 0 - self.ItemAwardState = 0 + self.NPCID = 0 + self.AttackCount = 0 return def GetLength(self): - return sizeof(tagMCMWPrivilegeData) + return sizeof(tagMCNPCAttackCount) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo: - PriID:%d, - State:%d, - CurValue:%d, - GotValue:%d, - ItemAwardState:%d + DumpString = '''// A3 25 NPC已攻击次数信息 //tagMCNPCAttackCountInfo: + NPCID:%d, + AttackCount:%d '''\ %( - self.PriID, - self.State, - self.CurValue, - self.GotValue, - self.ItemAwardState + self.NPCID, + self.AttackCount ) return DumpString -class tagMCMWPrivilegeDataInfo(Structure): +class tagMCNPCAttackCountInfo(Structure): Head = tagHead() - Count = 0 #(BYTE Count)// 信息个数 - InfoList = list() #(vector<tagMCMWPrivilegeData> InfoList)// 信息列表 + Count = 0 #(BYTE Count) + NPCAttackCountList = list() #(vector<tagMCNPCAttackCount> NPCAttackCountList) data = None def __init__(self): self.Clear() self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0x53 + self.Head.SubCmd = 0x25 return def ReadData(self, _lpData, _pos=0, _Len=0): @@ -15787,18 +16353,18 @@ _pos = self.Head.ReadData(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): - temInfoList = tagMCMWPrivilegeData() - _pos = temInfoList.ReadData(_lpData, _pos) - self.InfoList.append(temInfoList) + temNPCAttackCountList = tagMCNPCAttackCount() + _pos = temNPCAttackCountList.ReadData(_lpData, _pos) + self.NPCAttackCountList.append(temNPCAttackCountList) return _pos def Clear(self): self.Head = tagHead() self.Head.Clear() self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0x53 + self.Head.SubCmd = 0x25 self.Count = 0 - self.InfoList = list() + self.NPCAttackCountList = list() return def GetLength(self): @@ -15806,7 +16372,7 @@ length += self.Head.GetLength() length += 1 for i in range(self.Count): - length += self.InfoList[i].GetLength() + length += self.NPCAttackCountList[i].GetLength() return length @@ -15815,14 +16381,14 @@ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): - data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + data = CommFunc.WriteString(data, self.NPCAttackCountList[i].GetLength(), self.NPCAttackCountList[i].GetBuffer()) return data def OutputString(self): DumpString = ''' Head:%s, Count:%d, - InfoList:%s + NPCAttackCountList:%s '''\ %( self.Head.OutputString(), @@ -15832,8 +16398,8 @@ return DumpString -m_NAtagMCMWPrivilegeDataInfo=tagMCMWPrivilegeDataInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMWPrivilegeDataInfo.Head.Cmd,m_NAtagMCMWPrivilegeDataInfo.Head.SubCmd))] = m_NAtagMCMWPrivilegeDataInfo +m_NAtagMCNPCAttackCountInfo=tagMCNPCAttackCountInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCAttackCountInfo.Head.Cmd,m_NAtagMCNPCAttackCountInfo.Head.SubCmd))] = m_NAtagMCNPCAttackCountInfo #------------------------------------------------------ @@ -16469,20 +17035,16 @@ #------------------------------------------------------ # A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg -class tagMCPlayerStoveMsg(Structure): +class tagMCPlayerStoveInfo(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("StoveLV", c_ubyte), # 炼丹炉等级 - ("StoveExp", c_int), # 炼丹炉经验 - ("ItemID", c_int), # 合成物品id + ("AlchemyID", c_int), # 丹 ID + ("StartTime", c_int), # 开始炼的时间 + ("AlchemyTimes", c_ushort), # 炼的次数 ] def __init__(self): self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0xBF return def ReadData(self, stringData, _pos=0, _len=0): @@ -16491,39 +17053,123 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0xBF - self.StoveLV = 0 - self.StoveExp = 0 - self.ItemID = 0 + self.AlchemyID = 0 + self.StartTime = 0 + self.AlchemyTimes = 0 return def GetLength(self): - return sizeof(tagMCPlayerStoveMsg) + return sizeof(tagMCPlayerStoveInfo) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg: - Cmd:%s, - SubCmd:%s, - StoveLV:%d, - StoveExp:%d, - ItemID:%d + AlchemyID:%d, + StartTime:%d, + AlchemyTimes:%d '''\ %( - self.Cmd, - self.SubCmd, + self.AlchemyID, + self.StartTime, + self.AlchemyTimes + ) + return DumpString + + +class tagMCPlayerStoveMsg(Structure): + Head = tagHead() + StoveLV = 0 #(BYTE StoveLV)// 炼丹炉等级 + StoveExp = 0 #(DWORD StoveExp)// 炼丹炉经验 + ItemID = 0 #(DWORD ItemID)// 合成物品id + ItemCnt = 0 #(BYTE ItemCnt)// 丹药数量 + StoveCnt = 0 #(WORD StoveCnt)// 丹药数量 + InfoList = list() #(vector<tagMCPlayerStoveInfo> InfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xBF + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.StoveCnt): + temInfoList = tagMCPlayerStoveInfo() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xBF + self.StoveLV = 0 + self.StoveExp = 0 + self.ItemID = 0 + self.ItemCnt = 0 + self.StoveCnt = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 + length += 4 + length += 1 + length += 2 + for i in range(self.StoveCnt): + length += self.InfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.StoveLV) + data = CommFunc.WriteDWORD(data, self.StoveExp) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteBYTE(data, self.ItemCnt) + data = CommFunc.WriteWORD(data, self.StoveCnt) + for i in range(self.StoveCnt): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StoveLV:%d, + StoveExp:%d, + ItemID:%d, + ItemCnt:%d, + StoveCnt:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), self.StoveLV, self.StoveExp, - self.ItemID + self.ItemID, + self.ItemCnt, + self.StoveCnt, + "..." ) return DumpString m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Head.Cmd,m_NAtagMCPlayerStoveMsg.Head.SubCmd))] = m_NAtagMCPlayerStoveMsg #------------------------------------------------------ @@ -16591,6 +17237,8 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("BeginTime", c_int), #开始计时时间 + ("BuffTime", c_int), #buff剩余时间 + ("BuffAddRate", c_int), #buff加成万分率 ("CurExp", c_int), #当前总经验 ("CurExpPoint", c_int), #当前总经验点 ] @@ -16610,6 +17258,8 @@ self.Cmd = 0xA3 self.SubCmd = 0x27 self.BeginTime = 0 + self.BuffTime = 0 + self.BuffAddRate = 0 self.CurExp = 0 self.CurExpPoint = 0 return @@ -16625,6 +17275,8 @@ Cmd:%s, SubCmd:%s, BeginTime:%d, + BuffTime:%d, + BuffAddRate:%d, CurExp:%d, CurExpPoint:%d '''\ @@ -16632,6 +17284,8 @@ self.Cmd, self.SubCmd, self.BeginTime, + self.BuffTime, + self.BuffAddRate, self.CurExp, self.CurExpPoint ) @@ -16653,6 +17307,7 @@ ("ExtraCnt", c_ubyte), # VIP额外次数 ("ExtraData", c_ubyte), # 额外参数1 ("ExtraData2", c_ubyte), # 额外参数2 + ("HaveRecover", c_ubyte), # 已找回 1-全部已找回 2-非VIP已找回 ] def __init__(self): @@ -16670,6 +17325,7 @@ self.ExtraCnt = 0 self.ExtraData = 0 self.ExtraData2 = 0 + self.HaveRecover = 0 return def GetLength(self): @@ -16684,14 +17340,16 @@ RecoverCnt:%d, ExtraCnt:%d, ExtraData:%d, - ExtraData2:%d + ExtraData2:%d, + HaveRecover:%d '''\ %( self.Index, self.RecoverCnt, self.ExtraCnt, self.ExtraData, - self.ExtraData2 + self.ExtraData2, + self.HaveRecover ) return DumpString @@ -16890,6 +17548,178 @@ m_NAtagMCSingleGoldGift=tagMCSingleGoldGift() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSingleGoldGift.Cmd,m_NAtagMCSingleGoldGift.SubCmd))] = m_NAtagMCSingleGoldGift + + +#------------------------------------------------------ +# A3 09 技能五行专精信息 #tagMCSkillElementInfo + +class tagMCSkillElementActiveData(Structure): + _pack_ = 1 + _fields_ = [ + ("SkillID", c_int), # 技能ID + ("ActiveLV", 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.SkillID = 0 + self.ActiveLV = 0 + return + + def GetLength(self): + return sizeof(tagMCSkillElementActiveData) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo: + SkillID:%d, + ActiveLV:%d + '''\ + %( + self.SkillID, + self.ActiveLV + ) + return DumpString + + +class tagMCSkillElementData(Structure): + MainSkillID = 0 #(DWORD MainSkillID)// 主技能ID + ElementSkillID = 0 #(DWORD ElementSkillID)// 选择的专精技能ID + SkillCnt = 0 #(BYTE SkillCnt)// 数量 + ActiveSkill = list() #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.SkillCnt): + temActiveSkill = tagMCSkillElementActiveData() + _pos = temActiveSkill.ReadData(_lpData, _pos) + self.ActiveSkill.append(temActiveSkill) + return _pos + + def Clear(self): + self.MainSkillID = 0 + self.ElementSkillID = 0 + self.SkillCnt = 0 + self.ActiveSkill = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 1 + for i in range(self.SkillCnt): + length += self.ActiveSkill[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.MainSkillID) + data = CommFunc.WriteDWORD(data, self.ElementSkillID) + data = CommFunc.WriteBYTE(data, self.SkillCnt) + for i in range(self.SkillCnt): + data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + MainSkillID:%d, + ElementSkillID:%d, + SkillCnt:%d, + ActiveSkill:%s + '''\ + %( + self.MainSkillID, + self.ElementSkillID, + self.SkillCnt, + "..." + ) + return DumpString + + +class tagMCSkillElementInfo(Structure): + Head = tagHead() + Cnt = 0 #(BYTE Cnt)// 数量 + InfoList = list() #(vector<tagMCSkillElementData> InfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x09 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Cnt): + temInfoList = tagMCSkillElementData() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x09 + self.Cnt = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Cnt): + length += self.InfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Cnt) + for i in range(self.Cnt): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Cnt:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Cnt, + "..." + ) + return DumpString + + +m_NAtagMCSkillElementInfo=tagMCSkillElementInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkillElementInfo.Head.Cmd,m_NAtagMCSkillElementInfo.Head.SubCmd))] = m_NAtagMCSkillElementInfo #------------------------------------------------------ @@ -18295,6 +19125,58 @@ #------------------------------------------------------ +# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult + +class tagMCFamilyActivityExchangeResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Point", c_int), # 活跃令 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x02 + 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 = 0x02 + self.Point = 0 + return + + def GetLength(self): + return sizeof(tagMCFamilyActivityExchangeResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult: + Cmd:%s, + SubCmd:%s, + Point:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Point + ) + return DumpString + + +m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult + + +#------------------------------------------------------ # A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward class tagMCFamilyDayAward(Structure): @@ -18448,74 +19330,6 @@ m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit - - -#------------------------------------------------------ -#A5 34 天梯竞技场状态#tagMCHighLadderState - -class tagMCHighLadderState(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Count", c_ubyte), #已挑战次数 - ("MaxCount", c_ubyte), #最大次数 - ("CDTime", c_int), #累计冷却时间 - ("IsRelCD", c_ubyte), #是否正在真实冷却状态 - ("Currency", c_int), #积分 - ] - - 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 - self.Count = 0 - self.MaxCount = 0 - self.CDTime = 0 - self.IsRelCD = 0 - self.Currency = 0 - return - - def GetLength(self): - return sizeof(tagMCHighLadderState) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A5 34 天梯竞技场状态//tagMCHighLadderState: - Cmd:%s, - SubCmd:%s, - Count:%d, - MaxCount:%d, - CDTime:%d, - IsRelCD:%d, - Currency:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Count, - self.MaxCount, - self.CDTime, - self.IsRelCD, - self.Currency - ) - return DumpString - - -m_NAtagMCHighLadderState=tagMCHighLadderState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHighLadderState.Cmd,m_NAtagMCHighLadderState.SubCmd))] = m_NAtagMCHighLadderState #------------------------------------------------------ @@ -19253,6 +20067,125 @@ m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState + + +#------------------------------------------------------ +# A7 18 采集奖励物品通知 #tagMCCollectAwardItemInfo + +class tagMCCollectAwardItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("Count", c_ubyte), + ("IsAuctionItem", 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.Count = 0 + self.IsAuctionItem = 0 + return + + def GetLength(self): + return sizeof(tagMCCollectAwardItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A7 18 采集奖励物品通知 //tagMCCollectAwardItemInfo: + ItemID:%d, + Count:%d, + IsAuctionItem:%d + '''\ + %( + self.ItemID, + self.Count, + self.IsAuctionItem + ) + return DumpString + + +class tagMCCollectAwardItemInfo(Structure): + Head = tagHead() + CollectNPCID = 0 #(DWORD CollectNPCID)//采集的NPCID + Count = 0 #(BYTE Count) + AwardItemList = list() #(vector<tagMCCollectAwardItem> AwardItemList)//奖励物品信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x18 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.CollectNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCCollectAwardItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x18 + self.CollectNPCID = 0 + self.Count = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.CollectNPCID) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + CollectNPCID:%d, + Count:%d, + AwardItemList:%s + '''\ + %( + self.Head.OutputString(), + self.CollectNPCID, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo #------------------------------------------------------ @@ -20296,6 +21229,84 @@ #------------------------------------------------------ +# A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult + +class tagSCPlayerEquipCacheResult(Structure): + Head = tagHead() + PlayerID = 0 #(DWORD PlayerID)//玩家ID + EquipClassLV = 0 #(BYTE EquipClassLV) + ItemDataSize = 0 #(WORD ItemDataSize) + ItemData = "" #(String ItemData)//物品记录 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA7 + 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.EquipClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ItemDataSize,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x19 + self.PlayerID = 0 + self.EquipClassLV = 0 + self.ItemDataSize = 0 + self.ItemData = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += 2 + length += len(self.ItemData) + + 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.EquipClassLV) + data = CommFunc.WriteWORD(data, self.ItemDataSize) + data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PlayerID:%d, + EquipClassLV:%d, + ItemDataSize:%d, + ItemData:%s + '''\ + %( + self.Head.OutputString(), + self.PlayerID, + self.EquipClassLV, + self.ItemDataSize, + self.ItemData + ) + return DumpString + + +m_NAtagSCPlayerEquipCacheResult=tagSCPlayerEquipCacheResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCPlayerEquipCacheResult.Head.Cmd,m_NAtagSCPlayerEquipCacheResult.Head.SubCmd))] = m_NAtagSCPlayerEquipCacheResult + + +#------------------------------------------------------ # A7 07 通知玩家自定义聊天 #tagMCPyTalk class tagMCPyTalk(Structure): @@ -20962,6 +21973,58 @@ #------------------------------------------------------ +# A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult + +class tagMCLingQiEquipBreakResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MakeItemID", c_int), #突破后的物品ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA8 + 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 = 0xA8 + self.SubCmd = 0x15 + self.MakeItemID = 0 + return + + def GetLength(self): + return sizeof(tagMCLingQiEquipBreakResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult: + Cmd:%s, + SubCmd:%s, + MakeItemID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MakeItemID + ) + return DumpString + + +m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult + + +#------------------------------------------------------ # A8 14 合成结果通知 #tagMCMakeItemAnswer class tagMCMakeItemAnswer(Structure): @@ -21389,126 +22452,6 @@ #------------------------------------------------------ -# A8 04 通知商店限购物品已购买次数信息 # tagMCShopItemBuyCntInfoList - -class tagMCShopItemBuyCntInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("ShopID", c_int), - ("ItemShopIndex", c_ushort), - ("ItemID", c_int), - ("BuyCnt", c_int), # 个人已购买数 - ("ServerBuyCnt", c_int), # 全服已购买数 - ] - - 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.ShopID = 0 - self.ItemShopIndex = 0 - self.ItemID = 0 - self.BuyCnt = 0 - self.ServerBuyCnt = 0 - return - - def GetLength(self): - return sizeof(tagMCShopItemBuyCntInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A8 04 通知商店限购物品已购买次数信息 // tagMCShopItemBuyCntInfoList: - ShopID:%d, - ItemShopIndex:%d, - ItemID:%d, - BuyCnt:%d, - ServerBuyCnt:%d - '''\ - %( - self.ShopID, - self.ItemShopIndex, - self.ItemID, - self.BuyCnt, - self.ServerBuyCnt - ) - return DumpString - - -class tagMCShopItemBuyCntInfoList(Structure): - Head = tagHead() - Count = 0 #(BYTE Count)//通知个数 - BuyCntList = list() #(vector<tagMCShopItemBuyCntInfo> BuyCntList) - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA8 - self.Head.SubCmd = 0x04 - 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): - temBuyCntList = tagMCShopItemBuyCntInfo() - _pos = temBuyCntList.ReadData(_lpData, _pos) - self.BuyCntList.append(temBuyCntList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA8 - self.Head.SubCmd = 0x04 - self.Count = 0 - self.BuyCntList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.Count): - length += self.BuyCntList[i].GetLength() - - 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.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - Count:%d, - BuyCntList:%s - '''\ - %( - self.Head.OutputString(), - self.Count, - "..." - ) - return DumpString - - -m_NAtagMCShopItemBuyCntInfoList=tagMCShopItemBuyCntInfoList() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemBuyCntInfoList.Head.Cmd,m_NAtagMCShopItemBuyCntInfoList.Head.SubCmd))] = m_NAtagMCShopItemBuyCntInfoList - - -#------------------------------------------------------ # A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo class tagMCShopItemDayBuyCnt(Structure): @@ -21621,239 +22564,6 @@ #------------------------------------------------------ -# A8 03 通知自定义商店物品信息 #tagMCShopItemInfoList - -class tagMCShopItemInfo(Structure): - ShopID = 0 #(DWORD ShopID) - ItemShopIndex = 0 #(WORD ItemShopIndex) - DataSize = 0 #(DWORD DataSize) - ItemList = "" #(String ItemList)//物品列表[[物品ID,数量,是否绑定,是否定制]] - PriceType = 0 #(BYTE PriceType) - Price = 0 #(DWORD Price) - OriginalPrice = 0 #(DWORD OriginalPrice)// 原价 - PlayerLVLimit = 0 #(WORD PlayerLVLimit)// 购买等级限制 - FamilyLVLimit = 0 #(BYTE FamilyLVLimit)// 购买战盟等级限制 - MaxBuyCnt = 0 #(DWORD MaxBuyCnt)// 个人限购数 - ServerMaxBuyCnt = 0 #(DWORD ServerMaxBuyCnt)// 全服限购数 - data = None - - def __init__(self): - self.Clear() - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - self.ShopID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ItemShopIndex,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ItemList,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize) - self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.Price,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.OriginalPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.PlayerLVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.FamilyLVLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.MaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ServerMaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos) - return _pos - - def Clear(self): - self.ShopID = 0 - self.ItemShopIndex = 0 - self.DataSize = 0 - self.ItemList = "" - self.PriceType = 0 - self.Price = 0 - self.OriginalPrice = 0 - self.PlayerLVLimit = 0 - self.FamilyLVLimit = 0 - self.MaxBuyCnt = 0 - self.ServerMaxBuyCnt = 0 - return - - def GetLength(self): - length = 0 - length += 4 - length += 2 - length += 4 - length += len(self.ItemList) - length += 1 - length += 4 - length += 4 - length += 2 - length += 1 - length += 4 - length += 4 - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteDWORD(data, self.ShopID) - data = CommFunc.WriteWORD(data, self.ItemShopIndex) - data = CommFunc.WriteDWORD(data, self.DataSize) - data = CommFunc.WriteString(data, self.DataSize, self.ItemList) - data = CommFunc.WriteBYTE(data, self.PriceType) - data = CommFunc.WriteDWORD(data, self.Price) - data = CommFunc.WriteDWORD(data, self.OriginalPrice) - data = CommFunc.WriteWORD(data, self.PlayerLVLimit) - data = CommFunc.WriteBYTE(data, self.FamilyLVLimit) - data = CommFunc.WriteDWORD(data, self.MaxBuyCnt) - data = CommFunc.WriteDWORD(data, self.ServerMaxBuyCnt) - return data - - def OutputString(self): - DumpString = ''' - ShopID:%d, - ItemShopIndex:%d, - DataSize:%d, - ItemList:%s, - PriceType:%d, - Price:%d, - OriginalPrice:%d, - PlayerLVLimit:%d, - FamilyLVLimit:%d, - MaxBuyCnt:%d, - ServerMaxBuyCnt:%d - '''\ - %( - self.ShopID, - self.ItemShopIndex, - self.DataSize, - self.ItemList, - self.PriceType, - self.Price, - self.OriginalPrice, - self.PlayerLVLimit, - self.FamilyLVLimit, - self.MaxBuyCnt, - self.ServerMaxBuyCnt - ) - return DumpString - - -class tagMCShopItemInfoList(Structure): - Head = tagHead() - Count = 0 #(BYTE Count)//通知个数 - ShopItemList = list() #(vector<tagMCShopItemInfo> ShopItemList) - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA8 - self.Head.SubCmd = 0x03 - 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): - temShopItemList = tagMCShopItemInfo() - _pos = temShopItemList.ReadData(_lpData, _pos) - self.ShopItemList.append(temShopItemList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA8 - self.Head.SubCmd = 0x03 - self.Count = 0 - self.ShopItemList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.Count): - length += self.ShopItemList[i].GetLength() - - 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.WriteString(data, self.ShopItemList[i].GetLength(), self.ShopItemList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - Count:%d, - ShopItemList:%s - '''\ - %( - self.Head.OutputString(), - self.Count, - "..." - ) - return DumpString - - -m_NAtagMCShopItemInfoList=tagMCShopItemInfoList() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemInfoList.Head.Cmd,m_NAtagMCShopItemInfoList.Head.SubCmd))] = m_NAtagMCShopItemInfoList - - -#------------------------------------------------------ -# A8 05 通知神秘商店刷新次数 #tagMCShopRefreshCnt - -class tagMCShopRefreshCnt(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ShopID", c_int), #商店ID - ("RefreshCnt", c_ushort), #已手动刷新次数 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA8 - 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 = 0xA8 - self.SubCmd = 0x05 - self.ShopID = 0 - self.RefreshCnt = 0 - return - - def GetLength(self): - return sizeof(tagMCShopRefreshCnt) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A8 05 通知神秘商店刷新次数 //tagMCShopRefreshCnt: - Cmd:%s, - SubCmd:%s, - ShopID:%d, - RefreshCnt:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ShopID, - self.RefreshCnt - ) - return DumpString - - -m_NAtagMCShopRefreshCnt=tagMCShopRefreshCnt() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopRefreshCnt.Cmd,m_NAtagMCShopRefreshCnt.SubCmd))] = m_NAtagMCShopRefreshCnt - - -#------------------------------------------------------ # A8 13 虚拟掉落物品 #tagMCVirtualItemDrop class tagMCVirtualItemDrop(Structure): @@ -21936,118 +22646,6 @@ m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop - - -#------------------------------------------------------ -# A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult - -class tagMCZhuXianDecomposeItem(Structure): - _pack_ = 1 - _fields_ = [ - ("ItemID", c_int), #物品ID - ("ItemCnt", c_ubyte), #物品数量 - ("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.ItemCnt = 0 - self.IsBind = 0 - return - - def GetLength(self): - return sizeof(tagMCZhuXianDecomposeItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult: - ItemID:%d, - ItemCnt:%d, - IsBind:%d - '''\ - %( - self.ItemID, - self.ItemCnt, - self.IsBind - ) - return DumpString - - -class tagMCZhuXianDecomposeResult(Structure): - Head = tagHead() - Cnt = 0 #(BYTE Cnt)//数量 - ItemList = list() #(vector<tagMCZhuXianDecomposeItem> ItemList) - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA8 - self.Head.SubCmd = 0x15 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.Cnt): - temItemList = tagMCZhuXianDecomposeItem() - _pos = temItemList.ReadData(_lpData, _pos) - self.ItemList.append(temItemList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA8 - self.Head.SubCmd = 0x15 - self.Cnt = 0 - self.ItemList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.Cnt): - length += self.ItemList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.Cnt) - for i in range(self.Cnt): - data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - Cnt:%d, - ItemList:%s - '''\ - %( - self.Head.OutputString(), - self.Cnt, - "..." - ) - return DumpString - - -m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult #------------------------------------------------------ @@ -23301,240 +23899,6 @@ #------------------------------------------------------ -# AA 03 升阶功能特惠奖励记录 #tagMCClassUPDayAwardRecordList - -class tagMCClassUPDayAwardRecord(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("DayType", c_ubyte), # 奖励日类型 - ("Record", c_int), # 奖励记录 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - self.SubCmd = 0x03 - 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 = 0xAA - self.SubCmd = 0x03 - self.DayType = 0 - self.Record = 0 - return - - def GetLength(self): - return sizeof(tagMCClassUPDayAwardRecord) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 03 升阶功能特惠奖励记录 //tagMCClassUPDayAwardRecordList: - Cmd:%s, - SubCmd:%s, - DayType:%d, - Record:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.DayType, - self.Record - ) - return DumpString - - -class tagMCClassUPDayAwardRecordList(Structure): - Head = tagHead() - RecordCount = 0 #(BYTE RecordCount)//记录个数 - RecordInfoList = list() #(vector<tagMCClassUPDayAwardRecord> RecordInfoList)//记录列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAA - self.Head.SubCmd = 0x03 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.RecordCount): - temRecordInfoList = tagMCClassUPDayAwardRecord() - _pos = temRecordInfoList.ReadData(_lpData, _pos) - self.RecordInfoList.append(temRecordInfoList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAA - self.Head.SubCmd = 0x03 - self.RecordCount = 0 - self.RecordInfoList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.RecordCount): - length += self.RecordInfoList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.RecordCount) - for i in range(self.RecordCount): - data = CommFunc.WriteString(data, self.RecordInfoList[i].GetLength(), self.RecordInfoList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - RecordCount:%d, - RecordInfoList:%s - '''\ - %( - self.Head.OutputString(), - self.RecordCount, - "..." - ) - return DumpString - - -m_NAtagMCClassUPDayAwardRecordList=tagMCClassUPDayAwardRecordList() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClassUPDayAwardRecordList.Head.Cmd,m_NAtagMCClassUPDayAwardRecordList.Head.SubCmd))] = m_NAtagMCClassUPDayAwardRecordList - - -#------------------------------------------------------ -# AA 06 消费奖励信息 #tagMCCostProfitInfo - -class tagMCCostProfitInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActionID", c_int), # 活动ID - ("TotalCost", c_int), # 总消费 - ("AwardState", c_int), # 奖励领取状态 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - 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 = 0xAA - self.SubCmd = 0x06 - self.ActionID = 0 - self.TotalCost = 0 - self.AwardState = 0 - return - - def GetLength(self): - return sizeof(tagMCCostProfitInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 06 消费奖励信息 //tagMCCostProfitInfo: - Cmd:%s, - SubCmd:%s, - ActionID:%d, - TotalCost:%d, - AwardState:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActionID, - self.TotalCost, - self.AwardState - ) - return DumpString - - -m_NAtagMCCostProfitInfo=tagMCCostProfitInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostProfitInfo.Cmd,m_NAtagMCCostProfitInfo.SubCmd))] = m_NAtagMCCostProfitInfo - - -#------------------------------------------------------ -# AA 07 消费排行特惠信息 #tagMCCostRankTeHuiInfo - -class tagMCCostRankTeHuiInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActionID", c_int), # 活动ID - ("TotalCost", c_int), # 总累计消费钻石 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - 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 = 0xAA - self.SubCmd = 0x07 - self.ActionID = 0 - self.TotalCost = 0 - return - - def GetLength(self): - return sizeof(tagMCCostRankTeHuiInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 07 消费排行特惠信息 //tagMCCostRankTeHuiInfo: - Cmd:%s, - SubCmd:%s, - ActionID:%d, - TotalCost:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActionID, - self.TotalCost - ) - return DumpString - - -m_NAtagMCCostRankTeHuiInfo=tagMCCostRankTeHuiInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRankTeHuiInfo.Cmd,m_NAtagMCCostRankTeHuiInfo.SubCmd))] = m_NAtagMCCostRankTeHuiInfo - - -#------------------------------------------------------ # AA 09 消费返利活动信息 #tagMCCostRebateInfo class tagMCCostRebateAwardItem(Structure): @@ -23842,6 +24206,58 @@ m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo + + +#------------------------------------------------------ +# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState + +class tagMCDayFreeGoldGiftState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + 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 = 0xAA + self.SubCmd = 0x24 + self.DayFreeGoldGiftState = 0 + return + + def GetLength(self): + return sizeof(tagMCDayFreeGoldGiftState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState: + Cmd:%s, + SubCmd:%s, + DayFreeGoldGiftState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DayFreeGoldGiftState + ) + return DumpString + + +m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState #------------------------------------------------------ @@ -25733,198 +26149,6 @@ #------------------------------------------------------ -# AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo - -class tagMCRechargeRankTeHuiInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActionID", c_int), # 活动ID - ("TotalGold", c_int), # 总累计充值元宝 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - 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 = 0xAA - self.SubCmd = 0x05 - self.ActionID = 0 - self.TotalGold = 0 - return - - def GetLength(self): - return sizeof(tagMCRechargeRankTeHuiInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 05 充值排行特惠信息 //tagMCRechargeRankTeHuiInfo: - Cmd:%s, - SubCmd:%s, - ActionID:%d, - TotalGold:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActionID, - self.TotalGold - ) - return DumpString - - -m_NAtagMCRechargeRankTeHuiInfo=tagMCRechargeRankTeHuiInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRankTeHuiInfo.Cmd,m_NAtagMCRechargeRankTeHuiInfo.SubCmd))] = m_NAtagMCRechargeRankTeHuiInfo - - -#------------------------------------------------------ -# AA 04 充值特惠信息 #tagMCRechargeTeHuiInfoList - -class tagMCRechargeTeHuiInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("GotCnt", c_ubyte), # 已领取次数 - ("CanGetCnt", c_ubyte), # 当前可领取次数 - ("CurTotalGold", c_int), # 当前规则累计充值元宝-仅针对累充规则 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - self.SubCmd = 0x04 - 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 = 0xAA - self.SubCmd = 0x04 - self.GotCnt = 0 - self.CanGetCnt = 0 - self.CurTotalGold = 0 - return - - def GetLength(self): - return sizeof(tagMCRechargeTeHuiInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 04 充值特惠信息 //tagMCRechargeTeHuiInfoList: - Cmd:%s, - SubCmd:%s, - GotCnt:%d, - CanGetCnt:%d, - CurTotalGold:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.GotCnt, - self.CanGetCnt, - self.CurTotalGold - ) - return DumpString - - -class tagMCRechargeTeHuiInfoList(Structure): - Head = tagHead() - ActionID = 0 #(DWORD ActionID)// 活动ID - TotalGold = 0 #(DWORD TotalGold)// 总累计充值元宝 - InfoCnt = 0 #(BYTE InfoCnt)// 信息个数 - InfoList = list() #(vector<tagMCRechargeTeHuiInfo> InfoList)// 信息列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAA - self.Head.SubCmd = 0x04 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.ActionID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.TotalGold,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.InfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.InfoCnt): - temInfoList = tagMCRechargeTeHuiInfo() - _pos = temInfoList.ReadData(_lpData, _pos) - self.InfoList.append(temInfoList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAA - self.Head.SubCmd = 0x04 - self.ActionID = 0 - self.TotalGold = 0 - self.InfoCnt = 0 - self.InfoList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 4 - length += 4 - length += 1 - for i in range(self.InfoCnt): - length += self.InfoList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteDWORD(data, self.ActionID) - data = CommFunc.WriteDWORD(data, self.TotalGold) - data = CommFunc.WriteBYTE(data, self.InfoCnt) - for i in range(self.InfoCnt): - data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ActionID:%d, - TotalGold:%d, - InfoCnt:%d, - InfoList:%s - '''\ - %( - self.Head.OutputString(), - self.ActionID, - self.TotalGold, - self.InfoCnt, - "..." - ) - return DumpString - - -m_NAtagMCRechargeTeHuiInfoList=tagMCRechargeTeHuiInfoList() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeTeHuiInfoList.Head.Cmd,m_NAtagMCRechargeTeHuiInfoList.Head.SubCmd))] = m_NAtagMCRechargeTeHuiInfoList - - -#------------------------------------------------------ # AA 11 限时特惠活动信息 #tagMCSpringSaleInfo class tagMCSpringSaleItem(Structure): @@ -26959,6 +27183,9 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("State", c_ubyte), #0-不可领 1-可领 2-已领取 + ("CTGTotal", c_int), #本次活动已累计充值,单位元 + ("FireworksBuyCount", c_ushort), #已购买高级烟花数 + ("FirewordsScore", c_int), #当前累计所有烟花总积分 ] def __init__(self): @@ -26976,6 +27203,9 @@ self.Cmd = 0xAA self.SubCmd = 0x14 self.State = 0 + self.CTGTotal = 0 + self.FireworksBuyCount = 0 + self.FirewordsScore = 0 return def GetLength(self): @@ -26988,18 +27218,132 @@ DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge: Cmd:%s, SubCmd:%s, - State:%d + State:%d, + CTGTotal:%d, + FireworksBuyCount:%d, + FirewordsScore:%d '''\ %( self.Cmd, self.SubCmd, - self.State + self.State, + self.CTGTotal, + self.FireworksBuyCount, + self.FirewordsScore ) return DumpString m_NAtagMCXJSDRecharge=tagMCXJSDRecharge() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge + + +#------------------------------------------------------ +# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo + +class tagMCBossFirstKillState(Structure): + _pack_ = 1 + _fields_ = [ + ("NPCID", c_int), + ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励 + ] + + 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.NPCID = 0 + self.FKState = 0 + return + + def GetLength(self): + return sizeof(tagMCBossFirstKillState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo: + NPCID:%d, + FKState:%d + '''\ + %( + self.NPCID, + self.FKState + ) + return DumpString + + +class tagMCBossFirstKillStateInfo(Structure): + Head = tagHead() + BossCount = 0 #(BYTE BossCount) + FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAB + self.Head.SubCmd = 0x01 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BossCount): + temFirstKillStateList = tagMCBossFirstKillState() + _pos = temFirstKillStateList.ReadData(_lpData, _pos) + self.FirstKillStateList.append(temFirstKillStateList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAB + self.Head.SubCmd = 0x01 + self.BossCount = 0 + self.FirstKillStateList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.BossCount): + length += self.FirstKillStateList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.BossCount) + for i in range(self.BossCount): + data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + BossCount:%d, + FirstKillStateList:%s + '''\ + %( + self.Head.OutputString(), + self.BossCount, + "..." + ) + return DumpString + + +m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo #------------------------------------------------------ @@ -27112,310 +27456,6 @@ m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo - - -#------------------------------------------------------ -# AB 06 活动物品兑换次数记录 #tagMCExchangeActionItemCntRecord - -class tagMCExchangeActionItemCnt(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ItemID", c_int), - ("ExcCnt", c_int), # 已兑换次数 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAB - 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 = 0xAB - self.SubCmd = 0x06 - self.ItemID = 0 - self.ExcCnt = 0 - return - - def GetLength(self): - return sizeof(tagMCExchangeActionItemCnt) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 06 活动物品兑换次数记录 //tagMCExchangeActionItemCntRecord: - Cmd:%s, - SubCmd:%s, - ItemID:%d, - ExcCnt:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ItemID, - self.ExcCnt - ) - return DumpString - - -class tagMCExchangeActionItemCntRecord(Structure): - Head = tagHead() - ActionKeyLen = 0 #(BYTE ActionKeyLen) - ActionKey = "" #(String ActionKey) - RecordCnt = 0 #(BYTE RecordCnt) - RecordList = list() #(vector<tagMCExchangeActionItemCnt> RecordList) - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x06 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen) - self.RecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.RecordCnt): - temRecordList = tagMCExchangeActionItemCnt() - _pos = temRecordList.ReadData(_lpData, _pos) - self.RecordList.append(temRecordList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x06 - self.ActionKeyLen = 0 - self.ActionKey = "" - self.RecordCnt = 0 - self.RecordList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += len(self.ActionKey) - length += 1 - for i in range(self.RecordCnt): - length += self.RecordList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.ActionKeyLen) - data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey) - data = CommFunc.WriteBYTE(data, self.RecordCnt) - for i in range(self.RecordCnt): - data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ActionKeyLen:%d, - ActionKey:%s, - RecordCnt:%d, - RecordList:%s - '''\ - %( - self.Head.OutputString(), - self.ActionKeyLen, - self.ActionKey, - self.RecordCnt, - "..." - ) - return DumpString - - -m_NAtagMCExchangeActionItemCntRecord=tagMCExchangeActionItemCntRecord() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeActionItemCntRecord.Head.Cmd,m_NAtagMCExchangeActionItemCntRecord.Head.SubCmd))] = m_NAtagMCExchangeActionItemCntRecord - - -#------------------------------------------------------ -# AB 07 节日活动奖励状态 #tagMCFestivalLoginAwardState - -class tagMCFestivalLoginAwardState(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("FestivalType", c_ubyte), # 节日类型 - ("State", c_int), # 领取状态 <按位取值,0-未领取 1-可领取 2-已领取> - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAB - 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 = 0xAB - self.SubCmd = 0x07 - self.FestivalType = 0 - self.State = 0 - return - - def GetLength(self): - return sizeof(tagMCFestivalLoginAwardState) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 07 节日活动奖励状态 //tagMCFestivalLoginAwardState: - Cmd:%s, - SubCmd:%s, - FestivalType:%d, - State:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.FestivalType, - self.State - ) - return DumpString - - -m_NAtagMCFestivalLoginAwardState=tagMCFestivalLoginAwardState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFestivalLoginAwardState.Cmd,m_NAtagMCFestivalLoginAwardState.SubCmd))] = m_NAtagMCFestivalLoginAwardState - - -#------------------------------------------------------ -# AB 02 领地占领每日奖励领奖情况 #tagMCManorDailyAward - -class tagMCManorDailyAward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("AwardRecord", c_int), # 按位表示每个领地领取情况;0-未领,1-已领 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAB - self.SubCmd = 0x02 - 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 = 0xAB - self.SubCmd = 0x02 - self.AwardRecord = 0 - return - - def GetLength(self): - return sizeof(tagMCManorDailyAward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 02 领地占领每日奖励领奖情况 //tagMCManorDailyAward: - Cmd:%s, - SubCmd:%s, - AwardRecord:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.AwardRecord - ) - return DumpString - - -m_NAtagMCManorDailyAward=tagMCManorDailyAward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorDailyAward.Cmd,m_NAtagMCManorDailyAward.SubCmd))] = m_NAtagMCManorDailyAward - - -#------------------------------------------------------ -# AB 01 通知领地战结果 #tagMCManorWarResult - -class tagMCManorWarResult(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Type", c_ubyte), # 0-普通信息;1-活动结果总结 - ("Result", c_ubyte), # 战盟胜负情况;0-未知,1-胜利,2-失败 - ("JoinTime", c_int), # 活动时总参与时间,毫秒 - ("JoinAward", c_ubyte), # 参与奖状态;0-不可领,1-可领,2-已领 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAB - self.SubCmd = 0x01 - 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 = 0xAB - self.SubCmd = 0x01 - self.Type = 0 - self.Result = 0 - self.JoinTime = 0 - self.JoinAward = 0 - return - - def GetLength(self): - return sizeof(tagMCManorWarResult) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 01 通知领地战结果 //tagMCManorWarResult: - Cmd:%s, - SubCmd:%s, - Type:%d, - Result:%d, - JoinTime:%d, - JoinAward:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Type, - self.Result, - self.JoinTime, - self.JoinAward - ) - return DumpString - - -m_NAtagMCManorWarResult=tagMCManorWarResult() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult #------------------------------------------------------ @@ -28788,6 +28828,83 @@ #------------------------------------------------------ +# B1 07 玩家点数信息 #tagMCRolePointInfo + +class tagMCRolePointInfo(Structure): + Head = tagHead() + PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 点类型个数 + PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 点类型列表 + PointValueList = list() #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x07 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PointAttrIDCount): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.PointAttrIDList.append(value) + for i in range(self.PointAttrIDCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.PointValueList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x07 + self.PointAttrIDCount = 0 + self.PointAttrIDList = list() + self.PointValueList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 * self.PointAttrIDCount + length += 4 * self.PointAttrIDCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.PointAttrIDCount) + for i in range(self.PointAttrIDCount): + data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i]) + for i in range(self.PointAttrIDCount): + data = CommFunc.WriteDWORD(data, self.PointValueList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PointAttrIDCount:%d, + PointAttrIDList:%s, + PointValueList:%s + '''\ + %( + self.Head.OutputString(), + self.PointAttrIDCount, + "...", + "..." + ) + return DumpString + + +m_NAtagMCRolePointInfo=tagMCRolePointInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRolePointInfo.Head.Cmd,m_NAtagMCRolePointInfo.Head.SubCmd))] = m_NAtagMCRolePointInfo + + +#------------------------------------------------------ # B1 01 玩家技能连击通知 #tagMCSkillCombo class tagMCSkillCombo(Structure): @@ -29005,6 +29122,54 @@ m_NAtagMCPlayerWallow=tagMCPlayerWallow() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerWallow.Cmd,m_NAtagMCPlayerWallow.SubCmd))] = m_NAtagMCPlayerWallow + + +#------------------------------------------------------ +#B1 08 开始印记流失时间 #tagMCYinjiStartTime + +class tagMCYinjiStartTime(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + 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 = 0xB1 + self.SubCmd = 0x08 + return + + def GetLength(self): + return sizeof(tagMCYinjiStartTime) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagMCYinjiStartTime=tagMCYinjiStartTime() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime #------------------------------------------------------ @@ -29312,6 +29477,118 @@ #------------------------------------------------------ +# B2 15 副本买buff信息通知 #tagMCFBBuyBuffInfo + +class tagMCFBBuyBuffTime(Structure): + _pack_ = 1 + _fields_ = [ + ("MapID", c_int), + ("MoneyCnt", c_ushort), + ("BuyTime", c_int), + ] + + 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.MapID = 0 + self.MoneyCnt = 0 + self.BuyTime = 0 + return + + def GetLength(self): + return sizeof(tagMCFBBuyBuffTime) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 15 副本买buff信息通知 //tagMCFBBuyBuffInfo: + MapID:%d, + MoneyCnt:%d, + BuyTime:%d + '''\ + %( + self.MapID, + self.MoneyCnt, + self.BuyTime + ) + return DumpString + + +class tagMCFBBuyBuffInfo(Structure): + Head = tagHead() + Cnt = 0 #(BYTE Cnt) + InfoList = list() #(vector<tagMCFBBuyBuffTime> InfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x15 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Cnt): + temInfoList = tagMCFBBuyBuffTime() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x15 + self.Cnt = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Cnt): + length += self.InfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Cnt) + for i in range(self.Cnt): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Cnt:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Cnt, + "..." + ) + return DumpString + + +m_NAtagMCFBBuyBuffInfo=tagMCFBBuyBuffInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBBuyBuffInfo.Head.Cmd,m_NAtagMCFBBuyBuffInfo.Head.SubCmd))] = m_NAtagMCFBBuyBuffInfo + + +#------------------------------------------------------ # B2 09 副本次数恢复剩余时间 #tagMCFBCntRegainRemainTime class tagMCFBCntRegain(Structure): @@ -29319,6 +29596,7 @@ _fields_ = [ ("DataMapID", c_int), # 地图ID ("RemainTime", c_int), # 剩余时间秒 + ("RegainCnt", c_ubyte), # 今日已恢复次数 ] def __init__(self): @@ -29333,6 +29611,7 @@ def Clear(self): self.DataMapID = 0 self.RemainTime = 0 + self.RegainCnt = 0 return def GetLength(self): @@ -29344,11 +29623,13 @@ def OutputString(self): DumpString = '''// B2 09 副本次数恢复剩余时间 //tagMCFBCntRegainRemainTime: DataMapID:%d, - RemainTime:%d + RemainTime:%d, + RegainCnt:%d '''\ %( self.DataMapID, - self.RemainTime + self.RemainTime, + self.RegainCnt ) return DumpString @@ -30150,6 +30431,118 @@ #------------------------------------------------------ +# B2 13 天星塔通关层数 #tagMCSkyTowerInfo + +class tagMCSkyTowerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Floor", c_int), # 已通关层 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + 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 = 0xB2 + self.SubCmd = 0x13 + self.Floor = 0 + return + + def GetLength(self): + return sizeof(tagMCSkyTowerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo: + Cmd:%s, + SubCmd:%s, + Floor:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Floor + ) + return DumpString + + +m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo + + +#------------------------------------------------------ +# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult + +class tagMCStartCustomSceneResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("FuncLineID", c_ushort), + ("Result", c_ubyte), #是否允许 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + 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 = 0xB2 + self.SubCmd = 0x16 + self.MapID = 0 + self.FuncLineID = 0 + self.Result = 0 + return + + def GetLength(self): + return sizeof(tagMCStartCustomSceneResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult: + Cmd:%s, + SubCmd:%s, + MapID:%d, + FuncLineID:%d, + Result:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.FuncLineID, + self.Result + ) + return DumpString + + +m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult + + +#------------------------------------------------------ #B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting class tagMCPushNotificationsSetting(Structure): @@ -30270,62 +30663,6 @@ m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt - - -#------------------------------------------------------ -# B2 13 诛仙塔通关层数 #tagMCZhuXianTowerInfo - -class tagMCZhuXianTowerInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Floor", c_int), # 已通关层 - ("LastFloor", c_int), # 上次挑战层 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB2 - 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 = 0xB2 - self.SubCmd = 0x13 - self.Floor = 0 - self.LastFloor = 0 - return - - def GetLength(self): - return sizeof(tagMCZhuXianTowerInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo: - Cmd:%s, - SubCmd:%s, - Floor:%d, - LastFloor:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Floor, - self.LastFloor - ) - return DumpString - - -m_NAtagMCZhuXianTowerInfo=tagMCZhuXianTowerInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianTowerInfo.Cmd,m_NAtagMCZhuXianTowerInfo.SubCmd))] = m_NAtagMCZhuXianTowerInfo #------------------------------------------------------ -- Gitblit v1.8.0