From ff3e540bb725cccaff39d0582b53a2070ad47436 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 12 一月 2023 17:08:27 +0800 Subject: [PATCH] 9762 【BT8】【后端】藏宝阁(删除激活古宝技能字段) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 771 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 769 insertions(+), 2 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 0919513..c0c0ffb 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -15140,6 +15140,118 @@ #------------------------------------------------------ +# C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo + +class tagGCCrossYaomoBossPlayerHurtInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("HurtTotal", c_int), # 总伤害值,小于亿部分 + ("HurtTotalEx", c_int), # 总伤害值,整除亿部分 + ("AwardState", c_int), # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x11 + self.HurtTotal = 0 + self.HurtTotalEx = 0 + self.AwardState = 0 + return + + def GetLength(self): + return sizeof(tagGCCrossYaomoBossPlayerHurtInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo: + Cmd:%s, + SubCmd:%s, + HurtTotal:%d, + HurtTotalEx:%d, + AwardState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.HurtTotal, + self.HurtTotalEx, + self.AwardState + ) + return DumpString + + +m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo + + +#------------------------------------------------------ +# C0 10 跨服所属分区信息 #tagGCCrossZoneInfo + +class tagGCCrossZoneInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("CommZoneID", c_ubyte), # 所属常规分区ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x10 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xC0 + self.SubCmd = 0x10 + self.CommZoneID = 0 + return + + def GetLength(self): + return sizeof(tagGCCrossZoneInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 10 跨服所属分区信息 //tagGCCrossZoneInfo: + Cmd:%s, + SubCmd:%s, + CommZoneID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.CommZoneID + ) + return DumpString + + +m_NAtagGCCrossZoneInfo=tagGCCrossZoneInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossZoneInfo.Cmd,m_NAtagGCCrossZoneInfo.SubCmd))] = m_NAtagGCCrossZoneInfo + + +#------------------------------------------------------ # C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo class tagGCLuckyCloudBuyLotteryRec(Structure): @@ -20633,6 +20745,118 @@ #------------------------------------------------------ +# A3 C7 古宝信息 #tagMCGubaoInfo + +class tagMCGubao(Structure): + _pack_ = 1 + _fields_ = [ + ("GubaoID", c_ushort), + ("GubaoStar", c_ubyte), + ("GubaoLV", 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.GubaoID = 0 + self.GubaoStar = 0 + self.GubaoLV = 0 + return + + def GetLength(self): + return sizeof(tagMCGubao) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 C7 古宝信息 //tagMCGubaoInfo: + GubaoID:%d, + GubaoStar:%d, + GubaoLV:%d + '''\ + %( + self.GubaoID, + self.GubaoStar, + self.GubaoLV + ) + return DumpString + + +class tagMCGubaoInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + GubaoInfoList = list() #(vector<tagMCGubao> GubaoInfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xC7 + 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): + temGubaoInfoList = tagMCGubao() + _pos = temGubaoInfoList.ReadData(_lpData, _pos) + self.GubaoInfoList.append(temGubaoInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xC7 + self.Count = 0 + self.GubaoInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.GubaoInfoList[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.GubaoInfoList[i].GetLength(), self.GubaoInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + GubaoInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCGubaoInfo=tagMCGubaoInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoInfo.Head.Cmd,m_NAtagMCGubaoInfo.Head.SubCmd))] = m_NAtagMCGubaoInfo + + +#------------------------------------------------------ # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord class tagMCHistoryReChargeAwardRecord(Structure): @@ -20802,6 +21026,114 @@ m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData + + +#------------------------------------------------------ +# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList + +class tagMCHorseSkinTimeInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("ID", c_int), # 对应坐骑幻化表ID + ("InvalidTime", 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.ID = 0 + self.InvalidTime = 0 + return + + def GetLength(self): + return sizeof(tagMCHorseSkinTimeInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList: + ID:%d, + InvalidTime:%d + '''\ + %( + self.ID, + self.InvalidTime + ) + return DumpString + + +class tagMCHorseSkinTimeInfoList(Structure): + Head = tagHead() + TimeCnt = 0 #(BYTE TimeCnt)//个数 + TimeInfoList = list() #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x10 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TimeCnt): + temTimeInfoList = tagMCHorseSkinTimeInfo() + _pos = temTimeInfoList.ReadData(_lpData, _pos) + self.TimeInfoList.append(temTimeInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x10 + self.TimeCnt = 0 + self.TimeInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.TimeCnt): + length += self.TimeInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.TimeCnt) + for i in range(self.TimeCnt): + data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + TimeCnt:%d, + TimeInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.TimeCnt, + "..." + ) + return DumpString + + +m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList #------------------------------------------------------ @@ -23984,10 +24316,12 @@ Head = tagHead() LV = 0 #(BYTE LV)//等阶 EatItemCount = 0 #(DWORD EatItemCount)//当前阶已吃丹个数 - SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位 + SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList TrainTypes = 0 #(BYTE TrainTypes)//培养类型数 TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1 TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1 + SkinPlusStateCount = 0 #(BYTE SkinPlusStateCount)//幻化激活状态值数 + SkinPlusStateList = list() #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位 data = None def __init__(self): @@ -24009,6 +24343,10 @@ for i in range(self.TrainTypes): value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.TrainItemCountList.append(value) + self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.SkinPlusStateCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.SkinPlusStateList.append(value) return _pos def Clear(self): @@ -24022,6 +24360,8 @@ self.TrainTypes = 0 self.TrainLVList = list() self.TrainItemCountList = list() + self.SkinPlusStateCount = 0 + self.SkinPlusStateList = list() return def GetLength(self): @@ -24033,6 +24373,8 @@ length += 1 length += 4 * self.TrainTypes length += 4 * self.TrainTypes + length += 1 + length += 4 * self.SkinPlusStateCount return length @@ -24047,6 +24389,9 @@ data = CommFunc.WriteDWORD(data, self.TrainLVList[i]) for i in range(self.TrainTypes): data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i]) + data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount) + for i in range(self.SkinPlusStateCount): + data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i]) return data def OutputString(self): @@ -24057,7 +24402,9 @@ SkinPlusState:%d, TrainTypes:%d, TrainLVList:%s, - TrainItemCountList:%s + TrainItemCountList:%s, + SkinPlusStateCount:%d, + SkinPlusStateList:%s '''\ %( self.Head.OutputString(), @@ -24066,6 +24413,8 @@ self.SkinPlusState, self.TrainTypes, "...", + "...", + self.SkinPlusStateCount, "..." ) return DumpString @@ -29074,6 +29423,424 @@ #------------------------------------------------------ +# AA 60 天帝礼包活动信息 #tagMCActGodGiftInfo + +class tagMCActGodGiftItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemNum", c_ubyte), # 物品在本库中的编号 + ("ItemID", c_int), + ("ItemCount", c_ushort), + ("IsBind", c_ubyte), + ("CanChooseTimes", c_ubyte), #可选择次数,0代表不限次数 + ("ChooseTimes", c_ubyte), #已选次数 + ("IsChoose", 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.ItemNum = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + self.CanChooseTimes = 0 + self.ChooseTimes = 0 + self.IsChoose = 0 + return + + def GetLength(self): + return sizeof(tagMCActGodGiftItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 60 天帝礼包活动信息 //tagMCActGodGiftInfo: + ItemNum:%d, + ItemID:%d, + ItemCount:%d, + IsBind:%d, + CanChooseTimes:%d, + ChooseTimes:%d, + IsChoose:%d + '''\ + %( + self.ItemNum, + self.ItemID, + self.ItemCount, + self.IsBind, + self.CanChooseTimes, + self.ChooseTimes, + self.IsChoose + ) + return DumpString + + +class tagMCActGodGiftItemLib(Structure): + ItemLibType = 0 #(BYTE ItemLibType)//物品库类型 + NeedChooseCount = 0 #(BYTE NeedChooseCount)//需要选择个数 + GodGiftItemCount = 0 #(BYTE GodGiftItemCount)//可选择物品个数 + GodGiftItemList = list() #(vector<tagMCActGodGiftItem> GodGiftItemList)//可选物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GodGiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.GodGiftItemCount): + temGodGiftItemList = tagMCActGodGiftItem() + _pos = temGodGiftItemList.ReadData(_lpData, _pos) + self.GodGiftItemList.append(temGodGiftItemList) + return _pos + + def Clear(self): + self.ItemLibType = 0 + self.NeedChooseCount = 0 + self.GodGiftItemCount = 0 + self.GodGiftItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += 1 + for i in range(self.GodGiftItemCount): + length += self.GodGiftItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.ItemLibType) + data = CommFunc.WriteBYTE(data, self.NeedChooseCount) + data = CommFunc.WriteBYTE(data, self.GodGiftItemCount) + for i in range(self.GodGiftItemCount): + data = CommFunc.WriteString(data, self.GodGiftItemList[i].GetLength(), self.GodGiftItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + ItemLibType:%d, + NeedChooseCount:%d, + GodGiftItemCount:%d, + GodGiftItemList:%s + '''\ + %( + self.ItemLibType, + self.NeedChooseCount, + self.GodGiftItemCount, + "..." + ) + return DumpString + + +class tagMCActGodGiftInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + IsDayReset = 0 #(BYTE IsDayReset)// 是否每日重置 + LimitLV = 0 #(WORD LimitLV)// 限制等级 + CostMoneyType = 0 #(BYTE CostMoneyType)//消耗货币类型 + CostMoneyValueCount = 0 #(BYTE CostMoneyValueCount) + CostMoneyValueList = list() #(vector<DWORD> CostMoneyValueList)//消耗货币值列表 + PrizeMoneyType = 0 #(BYTE PrizeMoneyType)//奖励货币类型 + PrizeMoneyValueCount = 0 #(BYTE PrizeMoneyValueCount) + PrizeMoneyValueList = list() #(vector<DWORD> PrizeMoneyValueList)//奖励货币值列表 + ResetLimitTimes = 0 #(BYTE ResetLimitTimes)//至少抽几次才可重置奖池 + ResetCountMax = 0 #(BYTE ResetCountMax)//最大可重置奖池次数 + IsAwardPoolOK = 0 #(BYTE IsAwardPoolOK)//奖池是否选择完毕,否的话需要先选择奖池才可抽奖 + ItemLibCount = 0 #(BYTE ItemLibCount)//奖池库个数 + ItemLibList = list() #(vector<tagMCActGodGiftItemLib> ItemLibList)//奖池库信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x60 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.CostMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CostMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CostMoneyValueCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.CostMoneyValueList.append(value) + self.PrizeMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PrizeMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PrizeMoneyValueCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.PrizeMoneyValueList.append(value) + self.ResetLimitTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ResetCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.IsAwardPoolOK,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ItemLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ItemLibCount): + temItemLibList = tagMCActGodGiftItemLib() + _pos = temItemLibList.ReadData(_lpData, _pos) + self.ItemLibList.append(temItemLibList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x60 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.IsDayReset = 0 + self.LimitLV = 0 + self.CostMoneyType = 0 + self.CostMoneyValueCount = 0 + self.CostMoneyValueList = list() + self.PrizeMoneyType = 0 + self.PrizeMoneyValueCount = 0 + self.PrizeMoneyValueList = list() + self.ResetLimitTimes = 0 + self.ResetCountMax = 0 + self.IsAwardPoolOK = 0 + self.ItemLibCount = 0 + self.ItemLibList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 1 + length += 2 + length += 1 + length += 1 + length += 4 * self.CostMoneyValueCount + length += 1 + length += 1 + length += 4 * self.PrizeMoneyValueCount + length += 1 + length += 1 + length += 1 + length += 1 + for i in range(self.ItemLibCount): + length += self.ItemLibList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.IsDayReset) + data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.CostMoneyType) + data = CommFunc.WriteBYTE(data, self.CostMoneyValueCount) + for i in range(self.CostMoneyValueCount): + data = CommFunc.WriteDWORD(data, self.CostMoneyValueList[i]) + data = CommFunc.WriteBYTE(data, self.PrizeMoneyType) + data = CommFunc.WriteBYTE(data, self.PrizeMoneyValueCount) + for i in range(self.PrizeMoneyValueCount): + data = CommFunc.WriteDWORD(data, self.PrizeMoneyValueList[i]) + data = CommFunc.WriteBYTE(data, self.ResetLimitTimes) + data = CommFunc.WriteBYTE(data, self.ResetCountMax) + data = CommFunc.WriteBYTE(data, self.IsAwardPoolOK) + data = CommFunc.WriteBYTE(data, self.ItemLibCount) + for i in range(self.ItemLibCount): + data = CommFunc.WriteString(data, self.ItemLibList[i].GetLength(), self.ItemLibList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + IsDayReset:%d, + LimitLV:%d, + CostMoneyType:%d, + CostMoneyValueCount:%d, + CostMoneyValueList:%s, + PrizeMoneyType:%d, + PrizeMoneyValueCount:%d, + PrizeMoneyValueList:%s, + ResetLimitTimes:%d, + ResetCountMax:%d, + IsAwardPoolOK:%d, + ItemLibCount:%d, + ItemLibList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.IsDayReset, + self.LimitLV, + self.CostMoneyType, + self.CostMoneyValueCount, + "...", + self.PrizeMoneyType, + self.PrizeMoneyValueCount, + "...", + self.ResetLimitTimes, + self.ResetCountMax, + self.IsAwardPoolOK, + self.ItemLibCount, + "..." + ) + return DumpString + + +m_NAtagMCActGodGiftInfo=tagMCActGodGiftInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftInfo.Head.Cmd,m_NAtagMCActGodGiftInfo.Head.SubCmd))] = m_NAtagMCActGodGiftInfo + + +#------------------------------------------------------ +# AA 61 天帝礼包活动玩家信息 #tagMCActGodGiftPlayerInfo + +class tagMCActGodGiftAwardItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemLibType", c_ubyte), #物品库类型 + ("ItemNum", 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.ItemLibType = 0 + self.ItemNum = 0 + return + + def GetLength(self): + return sizeof(tagMCActGodGiftAwardItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 61 天帝礼包活动玩家信息 //tagMCActGodGiftPlayerInfo: + ItemLibType:%d, + ItemNum:%d + '''\ + %( + self.ItemLibType, + self.ItemNum + ) + return DumpString + + +class tagMCActGodGiftPlayerInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + ResetCount = 0 #(BYTE ResetCount)// 本次活动已重置次数 + AwardItemCount = 0 #(BYTE AwardItemCount)// 本次奖池已抽中奖品个数,也代表本次奖池已抽奖次数 + AwardItemList = list() #(vector<tagMCActGodGiftAwardItem> AwardItemList)// 本次奖池已抽中物品列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x61 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ResetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardItemCount): + temAwardItemList = tagMCActGodGiftAwardItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x61 + self.ActNum = 0 + self.ResetCount = 0 + self.AwardItemCount = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 1 + for i in range(self.AwardItemCount): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + data = CommFunc.WriteBYTE(data, self.ResetCount) + data = CommFunc.WriteBYTE(data, self.AwardItemCount) + for i in range(self.AwardItemCount): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + ResetCount:%d, + AwardItemCount:%d, + AwardItemList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.ResetCount, + self.AwardItemCount, + "..." + ) + return DumpString + + +m_NAtagMCActGodGiftPlayerInfo=tagMCActGodGiftPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftPlayerInfo.Head.Cmd,m_NAtagMCActGodGiftPlayerInfo.Head.SubCmd))] = m_NAtagMCActGodGiftPlayerInfo + + +#------------------------------------------------------ # AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo class tagMCActGrowupBuyCTGItem(Structure): -- Gitblit v1.8.0