From 9a60fccaf9365a2a92f52835866d595ba14c575b Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 20 六月 2024 21:13:46 +0800 Subject: [PATCH] 10185 【越南】【港台】【主干】BOSS凭证修改 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 515 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 487 insertions(+), 28 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index ee24a33..a181783 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -4451,9 +4451,17 @@ Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 Value1 = 0 #(DWORD Value1)//排序依赖的值,比如,等级 Value2 = 0 #(DWORD Value2)//排序依赖的值,比如,战斗力 + Value3 = 0 #(DWORD Value3)//附加值 + Value4 = 0 #(DWORD Value4)//附加值 + Value5 = 0 #(DWORD Value5)//附加值 + Value6 = 0 #(DWORD Value6)//附加值 + Value7 = 0 #(DWORD Value7)//附加值 + Value8 = 0 #(DWORD Value8)//附加值 CmpValue = 0 #(DWORD CmpValue)// 比较权值 CmpValue2 = 0 #(DWORD CmpValue2)// 比较权值 CmpValue3 = 0 #(DWORD CmpValue3)// 比较权值 + DataLen = 0 #(WORD DataLen) + UserData = "" #(String UserData)//附加 data = None def __init__(self): @@ -4470,9 +4478,17 @@ self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value7,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value8,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.CmpValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.CmpValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.CmpValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen) return _pos def Clear(self): @@ -4484,9 +4500,17 @@ self.Type2 = 0 self.Value1 = 0 self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 self.CmpValue = 0 self.CmpValue2 = 0 self.CmpValue3 = 0 + self.DataLen = 0 + self.UserData = "" return def GetLength(self): @@ -4502,6 +4526,14 @@ length += 4 length += 4 length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.UserData) return length @@ -4515,9 +4547,17 @@ data = CommFunc.WriteBYTE(data, self.Type2) data = CommFunc.WriteDWORD(data, self.Value1) data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteDWORD(data, self.Value3) + data = CommFunc.WriteDWORD(data, self.Value4) + data = CommFunc.WriteDWORD(data, self.Value5) + data = CommFunc.WriteDWORD(data, self.Value6) + data = CommFunc.WriteDWORD(data, self.Value7) + data = CommFunc.WriteDWORD(data, self.Value8) data = CommFunc.WriteDWORD(data, self.CmpValue) data = CommFunc.WriteDWORD(data, self.CmpValue2) data = CommFunc.WriteDWORD(data, self.CmpValue3) + data = CommFunc.WriteWORD(data, self.DataLen) + data = CommFunc.WriteString(data, self.DataLen, self.UserData) return data def OutputString(self): @@ -4530,9 +4570,17 @@ Type2:%d, Value1:%d, Value2:%d, + Value3:%d, + Value4:%d, + Value5:%d, + Value6:%d, + Value7:%d, + Value8:%d, CmpValue:%d, CmpValue2:%d, - CmpValue3:%d + CmpValue3:%d, + DataLen:%d, + UserData:%s '''\ %( self.OrderIndex, @@ -4543,9 +4591,17 @@ self.Type2, self.Value1, self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, self.CmpValue, self.CmpValue2, - self.CmpValue3 + self.CmpValue3, + self.DataLen, + self.UserData ) return DumpString @@ -14728,9 +14784,17 @@ Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 Value1 = 0 #(DWORD Value1)//自定义值1 Value2 = 0 #(DWORD Value2)//自定义值2 + Value3 = 0 #(DWORD Value3)//附加值 + Value4 = 0 #(DWORD Value4)//附加值 + Value5 = 0 #(DWORD Value5)//附加值 + Value6 = 0 #(DWORD Value6)//附加值 + Value7 = 0 #(DWORD Value7)//附加值 + Value8 = 0 #(DWORD Value8)//附加值 CmpValue = 0 #(DWORD CmpValue)// 比较权值 CmpValue2 = 0 #(DWORD CmpValue2)// 比较权值 CmpValue3 = 0 #(DWORD CmpValue3)// 比较权值 + DataLen = 0 #(WORD DataLen) + UserData = "" #(String UserData)//附加 data = None def __init__(self): @@ -14745,9 +14809,17 @@ self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value7,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value8,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.CmpValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.CmpValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.CmpValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen) return _pos def Clear(self): @@ -14757,9 +14829,17 @@ self.Type2 = 0 self.Value1 = 0 self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 self.CmpValue = 0 self.CmpValue2 = 0 self.CmpValue3 = 0 + self.DataLen = 0 + self.UserData = "" return def GetLength(self): @@ -14773,6 +14853,14 @@ length += 4 length += 4 length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.UserData) return length @@ -14784,9 +14872,17 @@ data = CommFunc.WriteBYTE(data, self.Type2) data = CommFunc.WriteDWORD(data, self.Value1) data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteDWORD(data, self.Value3) + data = CommFunc.WriteDWORD(data, self.Value4) + data = CommFunc.WriteDWORD(data, self.Value5) + data = CommFunc.WriteDWORD(data, self.Value6) + data = CommFunc.WriteDWORD(data, self.Value7) + data = CommFunc.WriteDWORD(data, self.Value8) data = CommFunc.WriteDWORD(data, self.CmpValue) data = CommFunc.WriteDWORD(data, self.CmpValue2) data = CommFunc.WriteDWORD(data, self.CmpValue3) + data = CommFunc.WriteWORD(data, self.DataLen) + data = CommFunc.WriteString(data, self.DataLen, self.UserData) return data def OutputString(self): @@ -14797,9 +14893,17 @@ Type2:%d, Value1:%d, Value2:%d, + Value3:%d, + Value4:%d, + Value5:%d, + Value6:%d, + Value7:%d, + Value8:%d, CmpValue:%d, CmpValue2:%d, - CmpValue3:%d + CmpValue3:%d, + DataLen:%d, + UserData:%s '''\ %( self.ID, @@ -14808,9 +14912,17 @@ self.Type2, self.Value1, self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, self.CmpValue, self.CmpValue2, - self.CmpValue3 + self.CmpValue3, + self.DataLen, + self.UserData ) return DumpString @@ -31262,7 +31374,9 @@ class tagMCActBossTrialBillard(Structure): Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 Count = 0 #(BYTE Count)// 奖励物品数 - AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表 + AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励 + MemCount = 0 #(BYTE MemCount)// 成员奖励物品数 + MemAwardItemList = list() #(vector<tagMCActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效 data = None def __init__(self): @@ -31277,12 +31391,19 @@ temAwardItemList = tagMCActBossTrialItem() _pos = temAwardItemList.ReadData(_lpData, _pos) self.AwardItemList.append(temAwardItemList) + self.MemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.MemCount): + temMemAwardItemList = tagMCActBossTrialItem() + _pos = temMemAwardItemList.ReadData(_lpData, _pos) + self.MemAwardItemList.append(temMemAwardItemList) return _pos def Clear(self): self.Rank = 0 self.Count = 0 self.AwardItemList = list() + self.MemCount = 0 + self.MemAwardItemList = list() return def GetLength(self): @@ -31291,6 +31412,9 @@ length += 1 for i in range(self.Count): length += self.AwardItemList[i].GetLength() + length += 1 + for i in range(self.MemCount): + length += self.MemAwardItemList[i].GetLength() return length @@ -31300,17 +31424,24 @@ data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.MemCount) + for i in range(self.MemCount): + data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer()) return data def OutputString(self): DumpString = ''' Rank:%d, Count:%d, - AwardItemList:%s + AwardItemList:%s, + MemCount:%d, + MemAwardItemList:%s '''\ %( self.Rank, self.Count, + "...", + self.MemCount, "..." ) return DumpString @@ -31385,13 +31516,18 @@ ActNum = 0 #(BYTE ActNum)// 活动编号 StartDate = "" #(char StartDate[10])// 开始日期 y-m-d EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss + JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置 ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 LimitLV = 0 #(WORD LimitLV)// 限制等级 + SubResetType = 0 #(BYTE SubResetType)// 提交凭证奖励重置类型,0-跟随活动; 1-0点重置;2-5点重置 SubmitCount = 0 #(BYTE SubmitCount) SubmitInfoList = list() #(vector<tagMCActBossTrialSubmitInfo> SubmitInfoList)// 提交凭证信息列表 - BillardCount = 0 #(BYTE BillardCount) - BillboardInfoList = list() #(vector<tagMCActBossTrialBillard> BillboardInfoList)// 榜单信息列表 + PersonalBillCount = 0 #(BYTE PersonalBillCount) + PersonalBillboardInfoList = list() #(vector<tagMCActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 + FamilyBillCount = 0 #(BYTE FamilyBillCount) + FamilyBillboardInfoList = list() #(vector<tagMCActBossTrialBillard> FamilyBillboardInfoList)// 仙盟榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 data = None def __init__(self): @@ -31406,19 +31542,27 @@ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5) + self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.SubResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.SubmitCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.SubmitCount): temSubmitInfoList = tagMCActBossTrialSubmitInfo() _pos = temSubmitInfoList.ReadData(_lpData, _pos) self.SubmitInfoList.append(temSubmitInfoList) - self.BillardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.BillardCount): - temBillboardInfoList = tagMCActBossTrialBillard() - _pos = temBillboardInfoList.ReadData(_lpData, _pos) - self.BillboardInfoList.append(temBillboardInfoList) + self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PersonalBillCount): + temPersonalBillboardInfoList = tagMCActBossTrialBillard() + _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos) + self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList) + self.FamilyBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.FamilyBillCount): + temFamilyBillboardInfoList = tagMCActBossTrialBillard() + _pos = temFamilyBillboardInfoList.ReadData(_lpData, _pos) + self.FamilyBillboardInfoList.append(temFamilyBillboardInfoList) return _pos def Clear(self): @@ -31429,13 +31573,18 @@ self.ActNum = 0 self.StartDate = "" self.EndtDate = "" + self.JoinStartTime = "" + self.JoinEndTime = "" self.IsDayReset = 0 self.ResetType = 0 self.LimitLV = 0 + self.SubResetType = 0 self.SubmitCount = 0 self.SubmitInfoList = list() - self.BillardCount = 0 - self.BillboardInfoList = list() + self.PersonalBillCount = 0 + self.PersonalBillboardInfoList = list() + self.FamilyBillCount = 0 + self.FamilyBillboardInfoList = list() return def GetLength(self): @@ -31444,15 +31593,21 @@ length += 1 length += 10 length += 10 + length += 5 + length += 5 length += 1 length += 1 length += 2 length += 1 + length += 1 for i in range(self.SubmitCount): length += self.SubmitInfoList[i].GetLength() length += 1 - for i in range(self.BillardCount): - length += self.BillboardInfoList[i].GetLength() + for i in range(self.PersonalBillCount): + length += self.PersonalBillboardInfoList[i].GetLength() + length += 1 + for i in range(self.FamilyBillCount): + length += self.FamilyBillboardInfoList[i].GetLength() return length @@ -31462,15 +31617,21 @@ data = CommFunc.WriteBYTE(data, self.ActNum) data = CommFunc.WriteString(data, 10, self.StartDate) data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteString(data, 5, self.JoinStartTime) + data = CommFunc.WriteString(data, 5, self.JoinEndTime) data = CommFunc.WriteBYTE(data, self.IsDayReset) data = CommFunc.WriteBYTE(data, self.ResetType) data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.SubResetType) data = CommFunc.WriteBYTE(data, self.SubmitCount) for i in range(self.SubmitCount): data = CommFunc.WriteString(data, self.SubmitInfoList[i].GetLength(), self.SubmitInfoList[i].GetBuffer()) - data = CommFunc.WriteBYTE(data, self.BillardCount) - for i in range(self.BillardCount): - data = CommFunc.WriteString(data, self.BillboardInfoList[i].GetLength(), self.BillboardInfoList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.PersonalBillCount) + for i in range(self.PersonalBillCount): + data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.FamilyBillCount) + for i in range(self.FamilyBillCount): + data = CommFunc.WriteString(data, self.FamilyBillboardInfoList[i].GetLength(), self.FamilyBillboardInfoList[i].GetBuffer()) return data def OutputString(self): @@ -31479,25 +31640,35 @@ ActNum:%d, StartDate:%s, EndtDate:%s, + JoinStartTime:%s, + JoinEndTime:%s, IsDayReset:%d, ResetType:%d, LimitLV:%d, + SubResetType:%d, SubmitCount:%d, SubmitInfoList:%s, - BillardCount:%d, - BillboardInfoList:%s + PersonalBillCount:%d, + PersonalBillboardInfoList:%s, + FamilyBillCount:%d, + FamilyBillboardInfoList:%s '''\ %( self.Head.OutputString(), self.ActNum, self.StartDate, self.EndtDate, + self.JoinStartTime, + self.JoinEndTime, self.IsDayReset, self.ResetType, self.LimitLV, + self.SubResetType, self.SubmitCount, "...", - self.BillardCount, + self.PersonalBillCount, + "...", + self.FamilyBillCount, "..." ) return DumpString @@ -31516,8 +31687,9 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("ActNum", c_ubyte), # 活动编号 - ("SubmitCount", c_ushort), # 已提交凭证个数 - ("SubmitCountAward", c_int), # 提交凭证奖励领奖状态 + ("SubmitCount", c_int), # 已提交凭证个数,总个数 + ("SubmitAwardCount", c_int), # 已提交凭证个数,关联提交奖励的个数,领奖使用该个数判断 + ("SubmitAwardState", c_int), # 提交凭证奖励领奖状态 ] def __init__(self): @@ -31536,7 +31708,8 @@ self.SubCmd = 0x68 self.ActNum = 0 self.SubmitCount = 0 - self.SubmitCountAward = 0 + self.SubmitAwardCount = 0 + self.SubmitAwardState = 0 return def GetLength(self): @@ -31551,14 +31724,16 @@ SubCmd:%s, ActNum:%d, SubmitCount:%d, - SubmitCountAward:%d + SubmitAwardCount:%d, + SubmitAwardState:%d '''\ %( self.Cmd, self.SubCmd, self.ActNum, self.SubmitCount, - self.SubmitCountAward + self.SubmitAwardCount, + self.SubmitAwardState ) return DumpString @@ -38327,6 +38502,290 @@ #------------------------------------------------------ +# AA 76 Boss历练跨服活动信息 #tagMCCrossActBossTrialInfo + +class tagMCCrossActBossTrialItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("ItemCount", c_ushort), + ("IsBind", c_ubyte), + ] + + def __init__(self): + self.Clear() + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCCrossActBossTrialItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 76 Boss历练跨服活动信息 //tagMCCrossActBossTrialInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCCrossActBossTrialBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励 + MemCount = 0 #(BYTE MemCount)// 成员奖励物品数 + MemAwardItemList = list() #(vector<tagMCCrossActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCCrossActBossTrialItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.MemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.MemCount): + temMemAwardItemList = tagMCCrossActBossTrialItem() + _pos = temMemAwardItemList.ReadData(_lpData, _pos) + self.MemAwardItemList.append(temMemAwardItemList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.MemCount = 0 + self.MemAwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 1 + for i in range(self.MemCount): + length += self.MemAwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.MemCount) + for i in range(self.MemCount): + data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + MemCount:%d, + MemAwardItemList:%s + '''\ + %( + self.Rank, + self.Count, + "...", + self.MemCount, + "..." + ) + return DumpString + + +class tagMCCrossActBossTrialInfo(Structure): + Head = tagHead() + ServerInfoLen = 0 #(BYTE ServerInfoLen) + ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服 + GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss + JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss + IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置 + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 + RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜个数保底限制; + RankLimitFamily = 0 #(WORD RankLimitFamily)// 仙盟榜上榜个数保底限制; + PersonalBillCount = 0 #(BYTE PersonalBillCount) + PersonalBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 + FamilyBillCount = 0 #(BYTE FamilyBillCount) + FamilyBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> FamilyBillboardInfoList)// 仙盟榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x76 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen) + self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5) + self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) + self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RankLimitFamily,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PersonalBillCount): + temPersonalBillboardInfoList = tagMCCrossActBossTrialBillard() + _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos) + self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList) + self.FamilyBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.FamilyBillCount): + temFamilyBillboardInfoList = tagMCCrossActBossTrialBillard() + _pos = temFamilyBillboardInfoList.ReadData(_lpData, _pos) + self.FamilyBillboardInfoList.append(temFamilyBillboardInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x76 + self.ServerInfoLen = 0 + self.ServerIDRangeInfo = "" + self.GroupValue1 = 0 + self.StartDate = "" + self.EndtDate = "" + self.JoinStartTime = "" + self.JoinEndTime = "" + self.IsDayReset = 0 + self.ResetType = 0 + self.RankLimitPersonal = 0 + self.RankLimitFamily = 0 + self.PersonalBillCount = 0 + self.PersonalBillboardInfoList = list() + self.FamilyBillCount = 0 + self.FamilyBillboardInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += len(self.ServerIDRangeInfo) + length += 1 + length += 10 + length += 10 + length += 5 + length += 5 + length += 1 + length += 1 + length += 2 + length += 2 + length += 1 + for i in range(self.PersonalBillCount): + length += self.PersonalBillboardInfoList[i].GetLength() + length += 1 + for i in range(self.FamilyBillCount): + length += self.FamilyBillboardInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ServerInfoLen) + data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo) + data = CommFunc.WriteBYTE(data, self.GroupValue1) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteString(data, 5, self.JoinStartTime) + data = CommFunc.WriteString(data, 5, self.JoinEndTime) + data = CommFunc.WriteBYTE(data, self.IsDayReset) + data = CommFunc.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteWORD(data, self.RankLimitPersonal) + data = CommFunc.WriteWORD(data, self.RankLimitFamily) + data = CommFunc.WriteBYTE(data, self.PersonalBillCount) + for i in range(self.PersonalBillCount): + data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.FamilyBillCount) + for i in range(self.FamilyBillCount): + data = CommFunc.WriteString(data, self.FamilyBillboardInfoList[i].GetLength(), self.FamilyBillboardInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ServerInfoLen:%d, + ServerIDRangeInfo:%s, + GroupValue1:%d, + StartDate:%s, + EndtDate:%s, + JoinStartTime:%s, + JoinEndTime:%s, + IsDayReset:%d, + ResetType:%d, + RankLimitPersonal:%d, + RankLimitFamily:%d, + PersonalBillCount:%d, + PersonalBillboardInfoList:%s, + FamilyBillCount:%d, + FamilyBillboardInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.ServerInfoLen, + self.ServerIDRangeInfo, + self.GroupValue1, + self.StartDate, + self.EndtDate, + self.JoinStartTime, + self.JoinEndTime, + self.IsDayReset, + self.ResetType, + self.RankLimitPersonal, + self.RankLimitFamily, + self.PersonalBillCount, + "...", + self.FamilyBillCount, + "..." + ) + return DumpString + + +m_NAtagMCCrossActBossTrialInfo=tagMCCrossActBossTrialInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActBossTrialInfo.Head.Cmd,m_NAtagMCCrossActBossTrialInfo.Head.SubCmd))] = m_NAtagMCCrossActBossTrialInfo + + +#------------------------------------------------------ # AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo class tagMCDailyGiftbagItem(Structure): -- Gitblit v1.8.0