| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A0 08 玩家记录信息 #tagGCPlayerRecInfo
|
| | |
|
| | | class tagGCPlayerRec(Structure):
|
| | | Time = 0 #(DWORD Time)//时间
|
| | | Value1 = 0 #(DWORD Value1)//ֵ1
|
| | | Value2 = 0 #(DWORD Value2)//ֵ2
|
| | | Value3 = 0 #(DWORD Value3)//ֵ3
|
| | | Value4 = 0 #(DWORD Value4)//ֵ4
|
| | | Value5 = 0 #(DWORD Value5)//ֵ5
|
| | | Value6 = 0 #(DWORD Value6)//ֵ6
|
| | | Value7 = 0 #(DWORD Value7)//ֵ7
|
| | | Value8 = 0 #(DWORD Value8)//ֵ8
|
| | | UserDataLen = 0 #(WORD UserDataLen)//扩展数据长度
|
| | | UserData = "" #(String UserData)//扩展数据
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Time,_pos = CommFunc.ReadDWORD(_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.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Time = 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.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | 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
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Time)
|
| | | 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.WriteWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Time:%d,
|
| | | Value1:%d,
|
| | | Value2:%d,
|
| | | Value3:%d,
|
| | | Value4:%d,
|
| | | Value5:%d,
|
| | | Value6:%d,
|
| | | Value7:%d,
|
| | | Value8:%d,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | '''\
|
| | | %(
|
| | | self.Time,
|
| | | self.Value1,
|
| | | self.Value2,
|
| | | self.Value3,
|
| | | self.Value4,
|
| | | self.Value5,
|
| | | self.Value6,
|
| | | self.Value7,
|
| | | self.Value8,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCPlayerRecInfo(Structure):
|
| | | Head = tagHead()
|
| | | Type = 0 #(BYTE Type)//类型
|
| | | Count = 0 #(WORD Count)//数量
|
| | | PlayerRecList = list() #(vector<tagGCPlayerRec> PlayerRecList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA0
|
| | | self.Head.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temPlayerRecList = tagGCPlayerRec()
|
| | | _pos = temPlayerRecList.ReadData(_lpData, _pos)
|
| | | self.PlayerRecList.append(temPlayerRecList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA0
|
| | | self.Head.SubCmd = 0x08
|
| | | self.Type = 0
|
| | | self.Count = 0
|
| | | self.PlayerRecList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.PlayerRecList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Type)
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.PlayerRecList[i].GetLength(), self.PlayerRecList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Type:%d,
|
| | | Count:%d,
|
| | | PlayerRecList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Type,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCPlayerRecInfo=tagGCPlayerRecInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerRecInfo.Head.Cmd,m_NAtagGCPlayerRecInfo.Head.SubCmd))] = m_NAtagGCPlayerRecInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A0 06 服务器地图线路人数状态 #tagGCPyServerMapState
|
| | |
|
| | | class tagGCPyServerMapLineState(Structure):
|
| | |
| | | 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):
|
| | |
| | | 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):
|
| | |
| | | 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):
|
| | |
| | | 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
|
| | |
|
| | |
| | | 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):
|
| | |
| | | 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,
|
| | |
| | | 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
|
| | |
|
| | |
|
| | | class tagPYBillboardData(Structure):
|
| | | Head = tagHead()
|
| | | IsWatchSelf = 0 #(BYTE IsWatchSelf)
|
| | | WatchID = 0 #(DWORD WatchID)//查看指定ID名次前后,如玩家ID、家族ID等
|
| | | BillboardCount = 0 #(BYTE BillboardCount)
|
| | | Type = 0 #(BYTE Type)//排行榜类型
|
| | | Billboard = list() #(vector<tagPYBillboardInfo> Billboard)//size = BillboardCount
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.IsWatchSelf,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WatchID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BillboardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BillboardCount):
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA2
|
| | | self.IsWatchSelf = 0
|
| | | self.WatchID = 0
|
| | | self.BillboardCount = 0
|
| | | self.Type = 0
|
| | | self.Billboard = list()
|
| | |
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.BillboardCount):
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsWatchSelf)
|
| | | data = CommFunc.WriteDWORD(data, self.WatchID)
|
| | | data = CommFunc.WriteBYTE(data, self.BillboardCount)
|
| | | data = CommFunc.WriteBYTE(data, self.Type)
|
| | | for i in range(self.BillboardCount):
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | IsWatchSelf:%d,
|
| | | WatchID:%d,
|
| | | BillboardCount:%d,
|
| | | Type:%d,
|
| | | Billboard:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.IsWatchSelf,
|
| | | self.WatchID,
|
| | | self.BillboardCount,
|
| | | self.Type,
|
| | | "..."
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 34 福地结算奖励信息 #tagGCMineAreaAwardInfo
|
| | |
|
| | | class tagGCMineAreaAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | AwardType = 0 #(BYTE AwardType)// 0-通知有奖励,前端下次进入福地可请求进行结算;1-结算奖励结果通知
|
| | | AwardLen = 0 #(BYTE AwardLen)
|
| | | AwardInfo = "" #(String AwardInfo)//奖励信息 [物品ID,个数,是否拍品], ...]
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x34
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.AwardLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x34
|
| | | self.AwardType = 0
|
| | | self.AwardLen = 0
|
| | | self.AwardInfo = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.AwardInfo)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.AwardType)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardLen)
|
| | | data = CommFunc.WriteString(data, self.AwardLen, self.AwardInfo)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AwardType:%d,
|
| | | AwardLen:%d,
|
| | | AwardInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AwardType,
|
| | | self.AwardLen,
|
| | | self.AwardInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMineAreaAwardInfo=tagGCMineAreaAwardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineAreaAwardInfo.Head.Cmd,m_NAtagGCMineAreaAwardInfo.Head.SubCmd))] = m_NAtagGCMineAreaAwardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 33 福地详细信息 #tagGCMineAreaInfo
|
| | |
|
| | | class tagGCMineItem(Structure):
|
| | | Index = 0 #(BYTE Index)// 矿物所在福地位置索引,0~n
|
| | | MineID = 0 #(WORD MineID)// 矿物ID,对应福地采集表中ID,0代表该索引位置没有矿物
|
| | | MineType = 0 #(BYTE MineType)// 矿物类型:0-常规;1-超级
|
| | | UpdTime = 0 #(DWORD UpdTime)// 最后一次更新时间戳
|
| | | PosLen = 0 #(BYTE PosLen)
|
| | | Position = "" #(String Position)// 最后一次更新时所在位置百分比,0~100,支持小数,下0上100,可认为分为100格,速度为 x格/秒
|
| | | SpeedLen = 0 #(BYTE SpeedLen)
|
| | | MoveSpeed = "" #(String MoveSpeed)// 移动速度,x格/秒,支持小数
|
| | | EndTime = 0 #(DWORD EndTime)// 拉取结束时间戳
|
| | | WorkerCount = 0 #(BYTE WorkerCount)// 工人个数,为0时代表福地玩家没有使用工人拉回
|
| | | RobPlayerID = 0 #(DWORD RobPlayerID)// 抢夺玩家ID,为0时代表没人抢夺
|
| | | RobWorkerCount = 0 #(BYTE RobWorkerCount)// 抢夺工人个数
|
| | | RobPlayerName = "" #(char RobPlayerName[33])
|
| | | RobFace = 0 #(DWORD RobFace)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Index,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.MineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UpdTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PosLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Position,_pos = CommFunc.ReadString(_lpData, _pos,self.PosLen)
|
| | | self.SpeedLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoveSpeed,_pos = CommFunc.ReadString(_lpData, _pos,self.SpeedLen)
|
| | | self.EndTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.WorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RobPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RobWorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RobPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.RobFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Index = 0
|
| | | self.MineID = 0
|
| | | self.MineType = 0
|
| | | self.UpdTime = 0
|
| | | self.PosLen = 0
|
| | | self.Position = ""
|
| | | self.SpeedLen = 0
|
| | | self.MoveSpeed = ""
|
| | | self.EndTime = 0
|
| | | self.WorkerCount = 0
|
| | | self.RobPlayerID = 0
|
| | | self.RobWorkerCount = 0
|
| | | self.RobPlayerName = ""
|
| | | self.RobFace = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Position)
|
| | | length += 1
|
| | | length += len(self.MoveSpeed)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 33
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.Index)
|
| | | data = CommFunc.WriteWORD(data, self.MineID)
|
| | | data = CommFunc.WriteBYTE(data, self.MineType)
|
| | | data = CommFunc.WriteDWORD(data, self.UpdTime)
|
| | | data = CommFunc.WriteBYTE(data, self.PosLen)
|
| | | data = CommFunc.WriteString(data, self.PosLen, self.Position)
|
| | | data = CommFunc.WriteBYTE(data, self.SpeedLen)
|
| | | data = CommFunc.WriteString(data, self.SpeedLen, self.MoveSpeed)
|
| | | data = CommFunc.WriteDWORD(data, self.EndTime)
|
| | | data = CommFunc.WriteBYTE(data, self.WorkerCount)
|
| | | data = CommFunc.WriteDWORD(data, self.RobPlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.RobWorkerCount)
|
| | | data = CommFunc.WriteString(data, 33, self.RobPlayerName)
|
| | | data = CommFunc.WriteDWORD(data, self.RobFace)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Index:%d,
|
| | | MineID:%d,
|
| | | MineType:%d,
|
| | | UpdTime:%d,
|
| | | PosLen:%d,
|
| | | Position:%s,
|
| | | SpeedLen:%d,
|
| | | MoveSpeed:%s,
|
| | | EndTime:%d,
|
| | | WorkerCount:%d,
|
| | | RobPlayerID:%d,
|
| | | RobWorkerCount:%d,
|
| | | RobPlayerName:%s,
|
| | | RobFace:%d
|
| | | '''\
|
| | | %(
|
| | | self.Index,
|
| | | self.MineID,
|
| | | self.MineType,
|
| | | self.UpdTime,
|
| | | self.PosLen,
|
| | | self.Position,
|
| | | self.SpeedLen,
|
| | | self.MoveSpeed,
|
| | | self.EndTime,
|
| | | self.WorkerCount,
|
| | | self.RobPlayerID,
|
| | | self.RobWorkerCount,
|
| | | self.RobPlayerName,
|
| | | self.RobFace
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCMineArea(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)// 福地所属玩家ID,可能是自己或其他玩家ID,当ID小于10000时为假人
|
| | | PlayerName = "" #(char PlayerName[33])// 可能为空,如自己或假人
|
| | | Face = 0 #(DWORD Face)
|
| | | MineCount = 0 #(BYTE MineCount)
|
| | | MineItemList = list() #(vector<tagGCMineItem> MineItemList)// 矿物列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.MineCount):
|
| | | temMineItemList = tagGCMineItem()
|
| | | _pos = temMineItemList.ReadData(_lpData, _pos)
|
| | | self.MineItemList.append(temMineItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Face = 0
|
| | | self.MineCount = 0
|
| | | self.MineItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 33
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.MineCount):
|
| | | length += self.MineItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteBYTE(data, self.MineCount)
|
| | | for i in range(self.MineCount):
|
| | | data = CommFunc.WriteString(data, self.MineItemList[i].GetLength(), self.MineItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Face:%d,
|
| | | MineCount:%d,
|
| | | MineItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Face,
|
| | | self.MineCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCMineAreaInfo(Structure):
|
| | | Head = tagHead()
|
| | | QueryType = 0 #(BYTE QueryType)// 查询同步类型:0-后端主动同步;1-查看指定福地;2-查看道友福地列表;3-查看周围随机福地列表
|
| | | QueryValue = 0 #(DWORD QueryValue)// 查询值,类型1时-发送目标玩家ID;3时-发送是否重新随机
|
| | | AreaCount = 0 #(BYTE AreaCount)
|
| | | AreaList = list() #(vector<tagGCMineArea> AreaList)// 福地列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x33
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.QueryValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AreaCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AreaCount):
|
| | | temAreaList = tagGCMineArea()
|
| | | _pos = temAreaList.ReadData(_lpData, _pos)
|
| | | self.AreaList.append(temAreaList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x33
|
| | | self.QueryType = 0
|
| | | self.QueryValue = 0
|
| | | self.AreaCount = 0
|
| | | self.AreaList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.AreaCount):
|
| | | length += self.AreaList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.QueryType)
|
| | | data = CommFunc.WriteDWORD(data, self.QueryValue)
|
| | | data = CommFunc.WriteBYTE(data, self.AreaCount)
|
| | | for i in range(self.AreaCount):
|
| | | data = CommFunc.WriteString(data, self.AreaList[i].GetLength(), self.AreaList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | QueryType:%d,
|
| | | QueryValue:%d,
|
| | | AreaCount:%d,
|
| | | AreaList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.QueryType,
|
| | | self.QueryValue,
|
| | | self.AreaCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMineAreaInfo=tagGCMineAreaInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineAreaInfo.Head.Cmd,m_NAtagGCMineAreaInfo.Head.SubCmd))] = m_NAtagGCMineAreaInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 35 福地记录信息 #tagGCMineAreaRecordInfo
|
| | |
|
| | | class tagGCMineAreaRecord(Structure):
|
| | | RecordType = 0 #(BYTE RecordType)// 记录类型;1-自己拉物品;2-物品被人抢
|
| | | TagPlayerID = 0 #(DWORD TagPlayerID)// 目标玩家ID,等于自己玩家ID时代表拉自己的,反之为抢别人的
|
| | | RecordTime = 0 #(DWORD RecordTime)// 记录时间戳
|
| | | MineID = 0 #(WORD MineID)// 矿物ID,对应福地采集表中ID
|
| | | TagPlayerName = "" #(char TagPlayerName[33])
|
| | | TagFace = 0 #(DWORD TagFace)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TagPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RecordTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.TagFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.RecordType = 0
|
| | | self.TagPlayerID = 0
|
| | | self.RecordTime = 0
|
| | | self.MineID = 0
|
| | | self.TagPlayerName = ""
|
| | | self.TagFace = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 33
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.RecordType)
|
| | | data = CommFunc.WriteDWORD(data, self.TagPlayerID)
|
| | | data = CommFunc.WriteDWORD(data, self.RecordTime)
|
| | | data = CommFunc.WriteWORD(data, self.MineID)
|
| | | data = CommFunc.WriteString(data, 33, self.TagPlayerName)
|
| | | data = CommFunc.WriteDWORD(data, self.TagFace)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | RecordType:%d,
|
| | | TagPlayerID:%d,
|
| | | RecordTime:%d,
|
| | | MineID:%d,
|
| | | TagPlayerName:%s,
|
| | | TagFace:%d
|
| | | '''\
|
| | | %(
|
| | | self.RecordType,
|
| | | self.TagPlayerID,
|
| | | self.RecordTime,
|
| | | self.MineID,
|
| | | self.TagPlayerName,
|
| | | self.TagFace
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCMineAreaRecordInfo(Structure):
|
| | | Head = tagHead()
|
| | | RecordCount = 0 #(BYTE RecordCount)
|
| | | AreaRecordList = list() #(vector<tagGCMineAreaRecord> AreaRecordList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x35
|
| | | 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):
|
| | | temAreaRecordList = tagGCMineAreaRecord()
|
| | | _pos = temAreaRecordList.ReadData(_lpData, _pos)
|
| | | self.AreaRecordList.append(temAreaRecordList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x35
|
| | | self.RecordCount = 0
|
| | | self.AreaRecordList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.RecordCount):
|
| | | length += self.AreaRecordList[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.AreaRecordList[i].GetLength(), self.AreaRecordList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RecordCount:%d,
|
| | | AreaRecordList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RecordCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMineAreaRecordInfo=tagGCMineAreaRecordInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineAreaRecordInfo.Head.Cmd,m_NAtagGCMineAreaRecordInfo.Head.SubCmd))] = m_NAtagGCMineAreaRecordInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 32 福地物品拉预览结果 #tagGCMineItemPullPreviewRet
|
| | |
|
| | | class tagGCMineItemPullPreviewRet(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int), # 福地所属玩家ID,0默认自己
|
| | | ("ItemIndex", c_ubyte), # 物品所在位置索引0~n
|
| | | ("WorkerCount", c_ubyte), # 上工人人数
|
| | | ("NeedSeconds", c_int), # 预计需要时间,秒
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x32
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x32
|
| | | self.PlayerID = 0
|
| | | self.ItemIndex = 0
|
| | | self.WorkerCount = 0
|
| | | self.NeedSeconds = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCMineItemPullPreviewRet)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 32 福地物品拉预览结果 //tagGCMineItemPullPreviewRet:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerID:%d,
|
| | | ItemIndex:%d,
|
| | | WorkerCount:%d,
|
| | | NeedSeconds:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerID,
|
| | | self.ItemIndex,
|
| | | self.WorkerCount,
|
| | | self.NeedSeconds
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMineItemPullPreviewRet=tagGCMineItemPullPreviewRet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineItemPullPreviewRet.Cmd,m_NAtagGCMineItemPullPreviewRet.SubCmd))] = m_NAtagGCMineItemPullPreviewRet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
|
| | |
|
| | | class tagGCAssistPlayerInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 20 膜拜信息列表 #tagGCWorshipInfoList
|
| | |
|
| | | class tagGCWorshipInfo(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)// 目标玩家ID
|
| | | WorshipType = 0 #(BYTE WorshipType)// 膜拜类型
|
| | | WorshipValue = 0 #(DWORD WorshipValue)// 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
|
| | | InfoLen = 0 #(WORD InfoLen)
|
| | | PlayerInfo = "" #(String PlayerInfo)// 玩家信息{k:v, ...}
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.WorshipType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WorshipValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.InfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PlayerInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.InfoLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.WorshipType = 0
|
| | | self.WorshipValue = 0
|
| | | self.InfoLen = 0
|
| | | self.PlayerInfo = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.PlayerInfo)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.WorshipType)
|
| | | data = CommFunc.WriteDWORD(data, self.WorshipValue)
|
| | | data = CommFunc.WriteWORD(data, self.InfoLen)
|
| | | data = CommFunc.WriteString(data, self.InfoLen, self.PlayerInfo)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | WorshipType:%d,
|
| | | WorshipValue:%d,
|
| | | InfoLen:%d,
|
| | | PlayerInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.WorshipType,
|
| | | self.WorshipValue,
|
| | | self.InfoLen,
|
| | | self.PlayerInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCWorshipInfoList(Structure):
|
| | | Head = tagHead()
|
| | | WorshipCount = 0 #(BYTE WorshipCount)
|
| | | WorshipInfoList = list() #(vector<tagGCWorshipInfo> WorshipInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.WorshipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WorshipCount):
|
| | | temWorshipInfoList = tagGCWorshipInfo()
|
| | | _pos = temWorshipInfoList.ReadData(_lpData, _pos)
|
| | | self.WorshipInfoList.append(temWorshipInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x20
|
| | | self.WorshipCount = 0
|
| | | self.WorshipInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.WorshipCount):
|
| | | length += self.WorshipInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WorshipCount)
|
| | | for i in range(self.WorshipCount):
|
| | | data = CommFunc.WriteString(data, self.WorshipInfoList[i].GetLength(), self.WorshipInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | WorshipCount:%d,
|
| | | WorshipInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.WorshipCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCWorshipInfoList=tagGCWorshipInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipInfoList.Head.Cmd,m_NAtagGCWorshipInfoList.Head.SubCmd))] = m_NAtagGCWorshipInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 21 膜拜结果 #tagGCWorshipResult
|
| | |
|
| | | class tagGCWorshipResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int), # 目标玩家ID
|
| | | ("WorshipType", c_ubyte), # 膜拜类型
|
| | | ("WorshipValue", c_int), # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
|
| | | ("Result", c_ubyte), # 膜拜结果:0-成功;1-不存在该膜拜类型;2-不存在该目标膜拜;3-不能膜拜该目标;
|
| | | ("MoneyType", c_ubyte), # 货币类型
|
| | | ("MoneyValue", c_int), # 货币奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x21
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x21
|
| | | self.PlayerID = 0
|
| | | self.WorshipType = 0
|
| | | self.WorshipValue = 0
|
| | | self.Result = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCWorshipResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 21 膜拜结果 //tagGCWorshipResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerID:%d,
|
| | | WorshipType:%d,
|
| | | WorshipValue:%d,
|
| | | Result:%d,
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerID,
|
| | | self.WorshipType,
|
| | | self.WorshipValue,
|
| | | self.Result,
|
| | | self.MoneyType,
|
| | | self.MoneyValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCWorshipResult=tagGCWorshipResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipResult.Cmd,m_NAtagGCWorshipResult.SubCmd))] = m_NAtagGCWorshipResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 23 功能队伍解散 #tagGCFuncTeamDissolve
|
| | |
|
| | | class tagGCFuncTeamDissolve(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TeamID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB9
|
| | | self.SubCmd = 0x23
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB9
|
| | | self.SubCmd = 0x23
|
| | | self.TeamID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCFuncTeamDissolve)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B9 23 功能队伍解散 //tagGCFuncTeamDissolve:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TeamID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TeamID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFuncTeamDissolve=tagGCFuncTeamDissolve()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamDissolve.Cmd,m_NAtagGCFuncTeamDissolve.SubCmd))] = m_NAtagGCFuncTeamDissolve
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 22 功能队伍列表 #tagGCFuncTeamList
|
| | |
|
| | | class tagGCFuncTeamMem(Structure):
|
| | | ServerID = 0 #(DWORD ServerID)
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)// 玩家名,size = NameLen
|
| | | LV = 0 #(WORD LV)// 玩家等级
|
| | | Job = 0 #(BYTE Job)// 玩家职业
|
| | | RealmLV = 0 #(WORD RealmLV)// 玩家境界
|
| | | FightPower = 0 #(DWORD FightPower)// 战力,求余亿
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
|
| | | Value1 = 0 #(DWORD Value1)//ֵ1
|
| | | Value2 = 0 #(DWORD Value2)//ֵ2
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ServerID = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.LV = 0
|
| | | self.Job = 0
|
| | | self.RealmLV = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.Value1 = 0
|
| | | self.Value2 = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteDWORD(data, self.Value1)
|
| | | data = CommFunc.WriteDWORD(data, self.Value2)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ServerID:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | LV:%d,
|
| | | Job:%d,
|
| | | RealmLV:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | Value1:%d,
|
| | | Value2:%d
|
| | | '''\
|
| | | %(
|
| | | self.ServerID,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.LV,
|
| | | self.Job,
|
| | | self.RealmLV,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.Value1,
|
| | | self.Value2
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFuncTeam(Structure):
|
| | | TeamID = 0 #(DWORD TeamID)
|
| | | CreateTime = 0 #(DWORD CreateTime)//创建队伍时间戳
|
| | | FuncMapEx = 0 #(DWORD FuncMapEx)//功能地图扩展,如不同的层级
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | TeamName = "" #(String TeamName)//队伍名称
|
| | | CaptainID = 0 #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID
|
| | | MinLV = 0 #(WORD MinLV)//最低等级限制
|
| | | MinFightPower = 0 #(DWORD MinFightPower)//最低战力限制,求余亿
|
| | | MinFightPowerEx = 0 #(DWORD MinFightPowerEx)//最低战力限制,整除亿
|
| | | ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
|
| | | NeedCheck = 0 #(BYTE NeedCheck)//是否需要审核
|
| | | Value1 = 0 #(DWORD Value1)//ֵ1
|
| | | Value2 = 0 #(DWORD Value2)//ֵ2
|
| | | MemberCount = 0 #(BYTE MemberCount)
|
| | | MemberList = list() #(vector<tagGCFuncTeamMem> MemberList)// 成员列表
|
| | | ApplyCount = 0 #(WORD ApplyCount)
|
| | | ApplyIDList = list() #(vector<DWORD> ApplyIDList)// 申请玩家ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.MemberCount):
|
| | | temMemberList = tagGCFuncTeamMem()
|
| | | _pos = temMemberList.ReadData(_lpData, _pos)
|
| | | self.MemberList.append(temMemberList)
|
| | | self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.ApplyCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ApplyIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TeamID = 0
|
| | | self.CreateTime = 0
|
| | | self.FuncMapEx = 0
|
| | | self.NameLen = 0
|
| | | self.TeamName = ""
|
| | | self.CaptainID = 0
|
| | | self.MinLV = 0
|
| | | self.MinFightPower = 0
|
| | | self.MinFightPowerEx = 0
|
| | | self.ServerOnly = 0
|
| | | self.NeedCheck = 0
|
| | | self.Value1 = 0
|
| | | self.Value2 = 0
|
| | | self.MemberCount = 0
|
| | | self.MemberList = list()
|
| | | self.ApplyCount = 0
|
| | | self.ApplyIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.TeamName)
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.MemberCount):
|
| | | length += self.MemberList[i].GetLength()
|
| | | length += 2
|
| | | length += 4 * self.ApplyCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.TeamID)
|
| | | data = CommFunc.WriteDWORD(data, self.CreateTime)
|
| | | data = CommFunc.WriteDWORD(data, self.FuncMapEx)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.TeamName)
|
| | | data = CommFunc.WriteDWORD(data, self.CaptainID)
|
| | | data = CommFunc.WriteWORD(data, self.MinLV)
|
| | | data = CommFunc.WriteDWORD(data, self.MinFightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.MinFightPowerEx)
|
| | | data = CommFunc.WriteBYTE(data, self.ServerOnly)
|
| | | data = CommFunc.WriteBYTE(data, self.NeedCheck)
|
| | | data = CommFunc.WriteDWORD(data, self.Value1)
|
| | | data = CommFunc.WriteDWORD(data, self.Value2)
|
| | | data = CommFunc.WriteBYTE(data, self.MemberCount)
|
| | | for i in range(self.MemberCount):
|
| | | data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.ApplyCount)
|
| | | for i in range(self.ApplyCount):
|
| | | data = CommFunc.WriteDWORD(data, self.ApplyIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | TeamID:%d,
|
| | | CreateTime:%d,
|
| | | FuncMapEx:%d,
|
| | | NameLen:%d,
|
| | | TeamName:%s,
|
| | | CaptainID:%d,
|
| | | MinLV:%d,
|
| | | MinFightPower:%d,
|
| | | MinFightPowerEx:%d,
|
| | | ServerOnly:%d,
|
| | | NeedCheck:%d,
|
| | | Value1:%d,
|
| | | Value2:%d,
|
| | | MemberCount:%d,
|
| | | MemberList:%s,
|
| | | ApplyCount:%d,
|
| | | ApplyIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.TeamID,
|
| | | self.CreateTime,
|
| | | self.FuncMapEx,
|
| | | self.NameLen,
|
| | | self.TeamName,
|
| | | self.CaptainID,
|
| | | self.MinLV,
|
| | | self.MinFightPower,
|
| | | self.MinFightPowerEx,
|
| | | self.ServerOnly,
|
| | | self.NeedCheck,
|
| | | self.Value1,
|
| | | self.Value2,
|
| | | self.MemberCount,
|
| | | "...",
|
| | | self.ApplyCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFuncTeamList(Structure):
|
| | | Head = tagHead()
|
| | | FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
|
| | | FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级,0代表所有
|
| | | StartIndex = 0 #(DWORD StartIndex)// 查看的起始索引, 默认0
|
| | | QueryCnt = 0 #(BYTE QueryCnt)// 查看条数,默认20,最大不超过100
|
| | | HaveSpace = 0 #(BYTE HaveSpace)// 是否只查看有空位置的队伍
|
| | | IDLimitType = 0 #(BYTE IDLimitType)// ID限制类型:1-同仙盟队长;2-同ServerGroupID队长;3-同ServerID队长
|
| | | SearchLen = 0 #(BYTE SearchLen)
|
| | | SearchMsg = "" #(String SearchMsg)// 指定搜索时有用,可搜索指定队伍ID或模糊搜索队伍名称,搜索时返回最多QueryCnt个数的队伍
|
| | | LoopIndex = 0 #(DWORD LoopIndex)// 服务器检索到的索引,列表下拉时下一个查询包的StartIndex从这个LoopIndex开始
|
| | | TeamCount = 0 #(BYTE TeamCount)// 如果返回的队伍数小于QueryCnt,代表服务器已经没有满足条件的队伍了,列表再下拉时不再发查询包
|
| | | TeamList = list() #(vector<tagGCFuncTeam> TeamList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB9
|
| | | self.Head.SubCmd = 0x22
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.StartIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.QueryCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.HaveSpace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IDLimitType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SearchLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SearchMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.SearchLen)
|
| | | self.LoopIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TeamCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TeamCount):
|
| | | temTeamList = tagGCFuncTeam()
|
| | | _pos = temTeamList.ReadData(_lpData, _pos)
|
| | | self.TeamList.append(temTeamList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB9
|
| | | self.Head.SubCmd = 0x22
|
| | | self.FuncMapID = 0
|
| | | self.FuncMapEx = 0
|
| | | self.StartIndex = 0
|
| | | self.QueryCnt = 0
|
| | | self.HaveSpace = 0
|
| | | self.IDLimitType = 0
|
| | | self.SearchLen = 0
|
| | | self.SearchMsg = ""
|
| | | self.LoopIndex = 0
|
| | | self.TeamCount = 0
|
| | | self.TeamList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.SearchMsg)
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.TeamCount):
|
| | | length += self.TeamList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FuncMapID)
|
| | | data = CommFunc.WriteDWORD(data, self.FuncMapEx)
|
| | | data = CommFunc.WriteDWORD(data, self.StartIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.QueryCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.HaveSpace)
|
| | | data = CommFunc.WriteBYTE(data, self.IDLimitType)
|
| | | data = CommFunc.WriteBYTE(data, self.SearchLen)
|
| | | data = CommFunc.WriteString(data, self.SearchLen, self.SearchMsg)
|
| | | data = CommFunc.WriteDWORD(data, self.LoopIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.TeamCount)
|
| | | for i in range(self.TeamCount):
|
| | | data = CommFunc.WriteString(data, self.TeamList[i].GetLength(), self.TeamList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FuncMapID:%d,
|
| | | FuncMapEx:%d,
|
| | | StartIndex:%d,
|
| | | QueryCnt:%d,
|
| | | HaveSpace:%d,
|
| | | IDLimitType:%d,
|
| | | SearchLen:%d,
|
| | | SearchMsg:%s,
|
| | | LoopIndex:%d,
|
| | | TeamCount:%d,
|
| | | TeamList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FuncMapID,
|
| | | self.FuncMapEx,
|
| | | self.StartIndex,
|
| | | self.QueryCnt,
|
| | | self.HaveSpace,
|
| | | self.IDLimitType,
|
| | | self.SearchLen,
|
| | | self.SearchMsg,
|
| | | self.LoopIndex,
|
| | | self.TeamCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFuncTeamList=tagGCFuncTeamList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamList.Head.Cmd,m_NAtagGCFuncTeamList.Head.SubCmd))] = m_NAtagGCFuncTeamList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 20 功能队伍刷新 #tagGCFuncTeamRefresh
|
| | |
|
| | | class tagGCFuncTeamRefreshApply(Structure):
|
| | | ServerID = 0 #(DWORD ServerID)
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)// 玩家名,size = NameLen
|
| | | LV = 0 #(WORD LV)// 玩家等级
|
| | | Job = 0 #(BYTE Job)// 玩家职业
|
| | | RealmLV = 0 #(WORD RealmLV)// 玩家境界
|
| | | FightPower = 0 #(DWORD FightPower)// 战力,求余亿
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ServerID = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.LV = 0
|
| | | self.Job = 0
|
| | | self.RealmLV = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ServerID:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | LV:%d,
|
| | | Job:%d,
|
| | | RealmLV:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.ServerID,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.LV,
|
| | | self.Job,
|
| | | self.RealmLV,
|
| | | self.FightPower,
|
| | | self.FightPowerEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFuncTeamRefreshMem(Structure):
|
| | | ServerID = 0 #(DWORD ServerID)
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)// 玩家名,size = NameLen
|
| | | LV = 0 #(WORD LV)// 玩家等级
|
| | | Job = 0 #(BYTE Job)// 玩家职业
|
| | | RealmLV = 0 #(WORD RealmLV)// 玩家境界
|
| | | FightPower = 0 #(DWORD FightPower)// 战力,求余亿
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
|
| | | Value1 = 0 #(DWORD Value1)//ֵ1
|
| | | Value2 = 0 #(DWORD Value2)//ֵ2
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ServerID = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.LV = 0
|
| | | self.Job = 0
|
| | | self.RealmLV = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.Value1 = 0
|
| | | self.Value2 = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteDWORD(data, self.Value1)
|
| | | data = CommFunc.WriteDWORD(data, self.Value2)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ServerID:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | LV:%d,
|
| | | Job:%d,
|
| | | RealmLV:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | Value1:%d,
|
| | | Value2:%d
|
| | | '''\
|
| | | %(
|
| | | self.ServerID,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.LV,
|
| | | self.Job,
|
| | | self.RealmLV,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.Value1,
|
| | | self.Value2
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFuncTeamRefresh(Structure):
|
| | | Head = tagHead()
|
| | | TeamID = 0 #(DWORD TeamID)
|
| | | CreateTime = 0 #(DWORD CreateTime)//创建队伍时间戳
|
| | | FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
|
| | | FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | TeamName = "" #(String TeamName)// 队伍名称
|
| | | CaptainID = 0 #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID
|
| | | MinLV = 0 #(WORD MinLV)//最低等级限制
|
| | | MinFightPower = 0 #(DWORD MinFightPower)//最低战力限制,求余亿
|
| | | MinFightPowerEx = 0 #(DWORD MinFightPowerEx)//最低战力限制,整除亿
|
| | | ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
|
| | | NeedCheck = 0 #(BYTE NeedCheck)//是否需要审核
|
| | | Value1 = 0 #(DWORD Value1)//ֵ1
|
| | | Value2 = 0 #(DWORD Value2)//ֵ2
|
| | | MemberCount = 0 #(BYTE MemberCount)
|
| | | MemberList = list() #(vector<tagGCFuncTeamRefreshMem> MemberList)// 成员列表
|
| | | ApplyCount = 0 #(WORD ApplyCount)
|
| | | ApplyIDList = list() #(vector<DWORD> ApplyIDList)// 申请玩家ID列表
|
| | | ApplyInfoList = list() #(vector<tagGCFuncTeamRefreshApply> ApplyInfoList)// 申请玩家明细列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB9
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.MemberCount):
|
| | | temMemberList = tagGCFuncTeamRefreshMem()
|
| | | _pos = temMemberList.ReadData(_lpData, _pos)
|
| | | self.MemberList.append(temMemberList)
|
| | | self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.ApplyCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ApplyIDList.append(value)
|
| | | for i in range(self.ApplyCount):
|
| | | temApplyInfoList = tagGCFuncTeamRefreshApply()
|
| | | _pos = temApplyInfoList.ReadData(_lpData, _pos)
|
| | | self.ApplyInfoList.append(temApplyInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB9
|
| | | self.Head.SubCmd = 0x20
|
| | | self.TeamID = 0
|
| | | self.CreateTime = 0
|
| | | self.FuncMapID = 0
|
| | | self.FuncMapEx = 0
|
| | | self.NameLen = 0
|
| | | self.TeamName = ""
|
| | | self.CaptainID = 0
|
| | | self.MinLV = 0
|
| | | self.MinFightPower = 0
|
| | | self.MinFightPowerEx = 0
|
| | | self.ServerOnly = 0
|
| | | self.NeedCheck = 0
|
| | | self.Value1 = 0
|
| | | self.Value2 = 0
|
| | | self.MemberCount = 0
|
| | | self.MemberList = list()
|
| | | self.ApplyCount = 0
|
| | | self.ApplyIDList = list()
|
| | | self.ApplyInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.TeamName)
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.MemberCount):
|
| | | length += self.MemberList[i].GetLength()
|
| | | length += 2
|
| | | length += 4 * self.ApplyCount
|
| | | for i in range(self.ApplyCount):
|
| | | length += self.ApplyInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.TeamID)
|
| | | data = CommFunc.WriteDWORD(data, self.CreateTime)
|
| | | data = CommFunc.WriteDWORD(data, self.FuncMapID)
|
| | | data = CommFunc.WriteDWORD(data, self.FuncMapEx)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.TeamName)
|
| | | data = CommFunc.WriteDWORD(data, self.CaptainID)
|
| | | data = CommFunc.WriteWORD(data, self.MinLV)
|
| | | data = CommFunc.WriteDWORD(data, self.MinFightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.MinFightPowerEx)
|
| | | data = CommFunc.WriteBYTE(data, self.ServerOnly)
|
| | | data = CommFunc.WriteBYTE(data, self.NeedCheck)
|
| | | data = CommFunc.WriteDWORD(data, self.Value1)
|
| | | data = CommFunc.WriteDWORD(data, self.Value2)
|
| | | data = CommFunc.WriteBYTE(data, self.MemberCount)
|
| | | for i in range(self.MemberCount):
|
| | | data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.ApplyCount)
|
| | | for i in range(self.ApplyCount):
|
| | | data = CommFunc.WriteDWORD(data, self.ApplyIDList[i])
|
| | | for i in range(self.ApplyCount):
|
| | | data = CommFunc.WriteString(data, self.ApplyInfoList[i].GetLength(), self.ApplyInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TeamID:%d,
|
| | | CreateTime:%d,
|
| | | FuncMapID:%d,
|
| | | FuncMapEx:%d,
|
| | | NameLen:%d,
|
| | | TeamName:%s,
|
| | | CaptainID:%d,
|
| | | MinLV:%d,
|
| | | MinFightPower:%d,
|
| | | MinFightPowerEx:%d,
|
| | | ServerOnly:%d,
|
| | | NeedCheck:%d,
|
| | | Value1:%d,
|
| | | Value2:%d,
|
| | | MemberCount:%d,
|
| | | MemberList:%s,
|
| | | ApplyCount:%d,
|
| | | ApplyIDList:%s,
|
| | | ApplyInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TeamID,
|
| | | self.CreateTime,
|
| | | self.FuncMapID,
|
| | | self.FuncMapEx,
|
| | | self.NameLen,
|
| | | self.TeamName,
|
| | | self.CaptainID,
|
| | | self.MinLV,
|
| | | self.MinFightPower,
|
| | | self.MinFightPowerEx,
|
| | | self.ServerOnly,
|
| | | self.NeedCheck,
|
| | | self.Value1,
|
| | | self.Value2,
|
| | | self.MemberCount,
|
| | | "...",
|
| | | self.ApplyCount,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFuncTeamRefresh=tagGCFuncTeamRefresh()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamRefresh.Head.Cmd,m_NAtagGCFuncTeamRefresh.Head.SubCmd))] = m_NAtagGCFuncTeamRefresh
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 01 收到邀请加入队伍信息 #tagGCInviteJoinTeamInfo
|
| | |
|
| | | class tagGCInviteJoinTeamInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagGCTagMapTeamList=tagGCTagMapTeamList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTagMapTeamList.Head.Cmd,m_NAtagGCTagMapTeamList.Head.SubCmd))] = m_NAtagGCTagMapTeamList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 21 查找玩家功能队伍结果 #tagGCQueryPlayerFuncTeamRet
|
| | |
|
| | | class tagGCQueryPlayerFuncTeamRet(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("FuncMapID", c_int), # 功能地图ID或自定义的活动功能ID
|
| | | ("TeamID", c_int), # 玩家所属队伍ID,目前只同步0的情况,如果玩家有队伍统一B920封包同步处理
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB9
|
| | | self.SubCmd = 0x21
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB9
|
| | | self.SubCmd = 0x21
|
| | | self.FuncMapID = 0
|
| | | self.TeamID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCQueryPlayerFuncTeamRet)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B9 21 查找玩家功能队伍结果 //tagGCQueryPlayerFuncTeamRet:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | FuncMapID:%d,
|
| | | TeamID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.FuncMapID,
|
| | | self.TeamID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCQueryPlayerFuncTeamRet=tagGCQueryPlayerFuncTeamRet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCQueryPlayerFuncTeamRet.Cmd,m_NAtagGCQueryPlayerFuncTeamRet.SubCmd))] = m_NAtagGCQueryPlayerFuncTeamRet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | # C0 07 跨服排行榜信息 #tagGCCrossBillboardInfo
|
| | |
|
| | | class tagGCCrossBillboardData(Structure):
|
| | | OrderIndex = 0 #(WORD OrderIndex)//名次索引,0代表第一名
|
| | | ID = 0 #(DWORD ID)
|
| | | ID2 = 0 #(DWORD ID2)
|
| | | Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
|
| | | Name2 = "" #(char Name2[33])//名字2
|
| | | 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):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.OrderIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | 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):
|
| | | self.OrderIndex = 0
|
| | | self.ID = 0
|
| | | self.ID2 = 0
|
| | | self.Name1 = ""
|
| | | self.Name2 = ""
|
| | | 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):
|
| | | length = 0
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 33
|
| | | length += 33
|
| | |
| | | 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
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteWORD(data, self.OrderIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.ID)
|
| | | data = CommFunc.WriteDWORD(data, self.ID2)
|
| | | data = CommFunc.WriteString(data, 33, self.Name1)
|
| | | data = CommFunc.WriteString(data, 33, self.Name2)
|
| | | 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):
|
| | | DumpString = '''
|
| | | OrderIndex:%d,
|
| | | ID:%d,
|
| | | ID2:%d,
|
| | | Name1:%s,
|
| | | Name2:%s,
|
| | | 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,
|
| | | self.ID,
|
| | | self.ID2,
|
| | | self.Name1,
|
| | | self.Name2,
|
| | | 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
|
| | |
|
| | |
| | | Type = 0 #(BYTE Type)//榜单类型
|
| | | GroupValue1 = 0 #(BYTE GroupValue1)// 分组值1
|
| | | GroupValue2 = 0 #(BYTE GroupValue2)// 分组值2,与分组值1组合归为同组榜单数据
|
| | | WatchID = 0 #(DWORD WatchID)//查看指定ID名次前后,如玩家ID、家族ID等
|
| | | BillboardCount = 0 #(BYTE BillboardCount)
|
| | | CrossBillboardDataList = list() #(vector<tagGCCrossBillboardData> CrossBillboardDataList)
|
| | | data = None
|
| | |
| | | self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GroupValue2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WatchID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BillboardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BillboardCount):
|
| | | temCrossBillboardDataList = tagGCCrossBillboardData()
|
| | |
| | | self.Type = 0
|
| | | self.GroupValue1 = 0
|
| | | self.GroupValue2 = 0
|
| | | self.WatchID = 0
|
| | | self.BillboardCount = 0
|
| | | self.CrossBillboardDataList = list()
|
| | | return
|
| | |
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.BillboardCount):
|
| | | length += self.CrossBillboardDataList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.Type)
|
| | | data = CommFunc.WriteBYTE(data, self.GroupValue1)
|
| | | data = CommFunc.WriteBYTE(data, self.GroupValue2)
|
| | | data = CommFunc.WriteDWORD(data, self.WatchID)
|
| | | data = CommFunc.WriteBYTE(data, self.BillboardCount)
|
| | | for i in range(self.BillboardCount):
|
| | | data = CommFunc.WriteString(data, self.CrossBillboardDataList[i].GetLength(), self.CrossBillboardDataList[i].GetBuffer())
|
| | |
| | | Type:%d,
|
| | | GroupValue1:%d,
|
| | | GroupValue2:%d,
|
| | | WatchID:%d,
|
| | | BillboardCount:%d,
|
| | | CrossBillboardDataList:%s
|
| | | '''\
|
| | |
| | | self.Type,
|
| | | self.GroupValue1,
|
| | | self.GroupValue2,
|
| | | self.WatchID,
|
| | | self.BillboardCount,
|
| | | "..."
|
| | | )
|
| | |
| | | class tagMCCoinToGoldCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RecordID", c_ubyte), |
| | | ("RecordID", c_ushort), |
| | | ("TodayPayCount", c_ushort), # 今日已购买次数
|
| | | ("TotalPayCount", c_int), # 累计总购买次数
|
| | | ("WeekPayCount", c_ushort), # 周总购买次数
|
| | | ("MonthPayCount", c_ushort), # 月总购买次数
|
| | | ("SelectItemValue", c_int), # 自选物品索引值,每两位存储每个自选索引对应选择的物品索引+1,存储位值为0代表未选择,最多支持选择4种物品
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.TotalPayCount = 0
|
| | | self.WeekPayCount = 0
|
| | | self.MonthPayCount = 0
|
| | | self.SelectItemValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | TodayPayCount:%d,
|
| | | TotalPayCount:%d,
|
| | | WeekPayCount:%d,
|
| | | MonthPayCount:%d
|
| | | MonthPayCount:%d,
|
| | | SelectItemValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.RecordID,
|
| | | self.TodayPayCount,
|
| | | self.TotalPayCount,
|
| | | self.WeekPayCount,
|
| | | self.MonthPayCount
|
| | | self.MonthPayCount,
|
| | | self.SelectItemValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCoinToGoldCountInfo(Structure):
|
| | | Head = tagHead()
|
| | | RecordCount = 0 #(BYTE RecordCount)
|
| | | RecordCount = 0 #(WORD RecordCount)
|
| | | CTGCountInfoList = list() #(vector<tagMCCoinToGoldCount> CTGCountInfoList)
|
| | | data = None
|
| | |
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RecordCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.RecordCount):
|
| | | temCTGCountInfoList = tagMCCoinToGoldCount()
|
| | | _pos = temCTGCountInfoList.ReadData(_lpData, _pos)
|
| | |
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | for i in range(self.RecordCount):
|
| | | length += self.CTGCountInfoList[i].GetLength()
|
| | |
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RecordCount)
|
| | | data = CommFunc.WriteWORD(data, self.RecordCount)
|
| | | for i in range(self.RecordCount):
|
| | | data = CommFunc.WriteString(data, self.CTGCountInfoList[i].GetLength(), self.CTGCountInfoList[i].GetBuffer())
|
| | | return data
|
| | |
| | | OrderLen = 0 #(BYTE OrderLen)
|
| | | OrderID = "" #(String OrderID)// 订单id
|
| | | Coin = 0 #(DWORD Coin)// 充值的点卷
|
| | | RecordID = 0 #(BYTE RecordID)// ctgID
|
| | | RecordID = 0 #(WORD RecordID)// ctgID
|
| | | OrderInfoLen = 0 #(BYTE OrderInfoLen)
|
| | | OrderInfo = "" #(String OrderInfo)
|
| | | data = None
|
| | |
| | | self.OrderLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.OrderID,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderLen)
|
| | | self.Coin,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RecordID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RecordID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
|
| | | return _pos
|
| | |
| | | length += 1
|
| | | length += len(self.OrderID)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += len(self.OrderInfo)
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.OrderLen)
|
| | | data = CommFunc.WriteString(data, self.OrderLen, self.OrderID)
|
| | | data = CommFunc.WriteDWORD(data, self.Coin)
|
| | | data = CommFunc.WriteBYTE(data, self.RecordID)
|
| | | data = CommFunc.WriteWORD(data, self.RecordID)
|
| | | data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
|
| | | data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
|
| | | return data
|
| | |
| | |
|
| | | m_NAtagMCAttackMode=tagMCAttackMode()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAttackMode.Cmd,m_NAtagMCAttackMode.SubCmd))] = m_NAtagMCAttackMode
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 06 自动转化为对应物品ID个数刷新 #tagMCAutoItemCountRefresh
|
| | |
|
| | | class tagMCAutoItemCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", 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.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCAutoItemCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 06 自动转化为对应物品ID个数刷新 //tagMCAutoItemCountRefresh:
|
| | | ItemID:%d,
|
| | | ItemCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCAutoItemCountRefresh(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)// 刷新个数
|
| | | ItemCountList = list() #(vector<tagMCAutoItemCount> ItemCountList)// 物品信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA2
|
| | | self.Head.SubCmd = 0x06
|
| | | 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):
|
| | | temItemCountList = tagMCAutoItemCount()
|
| | | _pos = temItemCountList.ReadData(_lpData, _pos)
|
| | | self.ItemCountList.append(temItemCountList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA2
|
| | | self.Head.SubCmd = 0x06
|
| | | self.Count = 0
|
| | | self.ItemCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.ItemCountList[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.ItemCountList[i].GetLength(), self.ItemCountList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ItemCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCAutoItemCountRefresh=tagMCAutoItemCountRefresh()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAutoItemCountRefresh.Head.Cmd,m_NAtagMCAutoItemCountRefresh.Head.SubCmd))] = m_NAtagMCAutoItemCountRefresh
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 61 新聚魂孔信息 #tagMCGatherTheSoulHoleInfo
|
| | |
|
| | | class tagMCGatherTheSoulHoleInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)// 孔数
|
| | | HoleSoulList = list() #(vector<DWORD> HoleSoulList)// 孔聚魂ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x61
|
| | | 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.HoleSoulList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x61
|
| | | self.Count = 0
|
| | | self.HoleSoulList = 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.HoleSoulList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | HoleSoulList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGatherTheSoulHoleInfo=tagMCGatherTheSoulHoleInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGatherTheSoulHoleInfo.Head.Cmd,m_NAtagMCGatherTheSoulHoleInfo.Head.SubCmd))] = m_NAtagMCGatherTheSoulHoleInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 60 新聚魂信息 #tagMCGatherTheSoulInfo
|
| | |
|
| | | class tagMCGatherTheSoul(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("SoulID", c_int), |
| | | ("LV", c_ushort), |
| | | ]
|
| | |
|
| | | 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.SoulID = 0
|
| | | self.LV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGatherTheSoul)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 60 新聚魂信息 //tagMCGatherTheSoulInfo:
|
| | | SoulID:%d,
|
| | | LV:%d
|
| | | '''\
|
| | | %(
|
| | | self.SoulID,
|
| | | self.LV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGatherTheSoulInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)// 信息个数
|
| | | SoulList = list() #(vector<tagMCGatherTheSoul> SoulList)// 信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x60
|
| | | 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):
|
| | | temSoulList = tagMCGatherTheSoul()
|
| | | _pos = temSoulList.ReadData(_lpData, _pos)
|
| | | self.SoulList.append(temSoulList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x60
|
| | | self.Count = 0
|
| | | self.SoulList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.SoulList[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.SoulList[i].GetLength(), self.SoulList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | SoulList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGatherTheSoulInfo=tagMCGatherTheSoulInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGatherTheSoulInfo.Head.Cmd,m_NAtagMCGatherTheSoulInfo.Head.SubCmd))] = m_NAtagMCGatherTheSoulInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 1D 神兵等级信息 #tagMCGodWeaponLVList
|
| | |
|
| | | class tagMCGodWeaponLVInfo(Structure):
|
| | |
| | | PassGradeCnt = 0 #(BYTE PassGradeCnt)//星级值对应个数, 每个key存9个lineID
|
| | | PassGrade = list() #(vector<DWORD> PassGrade)//副本线路对应星级值列表
|
| | | EnterCntTotal = 0 #(DWORD EnterCntTotal)//累计进入次数
|
| | | PassLineID = 0 #(DWORD PassLineID)//已过关到的lineID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.PassGrade.append(value)
|
| | | self.EnterCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PassLineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.PassGradeCnt = 0
|
| | | self.PassGrade = list()
|
| | | self.EnterCntTotal = 0
|
| | | self.PassLineID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 2
|
| | | length += 1
|
| | | length += 4 * self.PassGradeCnt
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
| | | for i in range(self.PassGradeCnt):
|
| | | data = CommFunc.WriteDWORD(data, self.PassGrade[i])
|
| | | data = CommFunc.WriteDWORD(data, self.EnterCntTotal)
|
| | | data = CommFunc.WriteDWORD(data, self.PassLineID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ItemAddCnt:%d,
|
| | | PassGradeCnt:%d,
|
| | | PassGrade:%s,
|
| | | EnterCntTotal:%d
|
| | | EnterCntTotal:%d,
|
| | | PassLineID:%d
|
| | | '''\
|
| | | %(
|
| | | self.FBID,
|
| | |
| | | self.ItemAddCnt,
|
| | | self.PassGradeCnt,
|
| | | "...",
|
| | | self.EnterCntTotal
|
| | | self.EnterCntTotal,
|
| | | self.PassLineID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | # A3 51 寻宝功能信息 #tagMCTreasureInfo
|
| | |
|
| | | class tagMCTreasureTypeInfo(Structure):
|
| | | TreasureType = 0 #(BYTE TreasureType)//寻宝类型
|
| | | LuckValue = 0 #(WORD LuckValue)//当前幸运值
|
| | | IndexCount = 0 #(BYTE IndexCount)//索引个数
|
| | | FreeCountTime = list() #(vector<DWORD> FreeCountTime)// 模式对应开始计算免费次数时间time值
|
| | | data = None
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TreasureType", c_ubyte), #寻宝类型
|
| | | ("LuckValue", c_ushort), #当前幸运值
|
| | | ("TreasureCount", c_int), #已寻宝总次数
|
| | | ("FreeCountToday", c_ushort), #今日已免费寻宝次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.IndexCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.FreeCountTime.append(value)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TreasureType = 0
|
| | | self.LuckValue = 0
|
| | | self.IndexCount = 0
|
| | | self.FreeCountTime = list()
|
| | | self.TreasureCount = 0
|
| | | self.FreeCountToday = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4 * self.IndexCount
|
| | |
|
| | | return length
|
| | | return sizeof(tagMCTreasureTypeInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureType)
|
| | | data = CommFunc.WriteWORD(data, self.LuckValue)
|
| | | data = CommFunc.WriteBYTE(data, self.IndexCount)
|
| | | for i in range(self.IndexCount):
|
| | | data = CommFunc.WriteDWORD(data, self.FreeCountTime[i])
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
|
| | | TreasureType:%d,
|
| | | LuckValue:%d,
|
| | | IndexCount:%d,
|
| | | FreeCountTime:%s
|
| | | TreasureCount:%d,
|
| | | FreeCountToday:%d
|
| | | '''\
|
| | | %(
|
| | | self.TreasureType,
|
| | | self.LuckValue,
|
| | | self.IndexCount,
|
| | | "..."
|
| | | self.TreasureCount,
|
| | | self.FreeCountToday
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | class tagMCTreasureResult(Structure):
|
| | | Head = tagHead()
|
| | | AddTreasureScore = 0 #(WORD AddTreasureScore)// 本次寻宝增加的寻宝积分
|
| | | AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝增加的积分货币类型,可能为0
|
| | | AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝增加的积分货币值,可能为0
|
| | | AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
|
| | | TreasureResultLen = 0 #(WORD TreasureResultLen)
|
| | | TreasureResult = "" #(String TreasureResult)// 获得物品结果[[格子编号, 物品ID,个数,是否绑定], ...]
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AddTreasureScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AddMoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TreasureResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TreasureResult,_pos = CommFunc.ReadString(_lpData, _pos,self.TreasureResultLen)
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x50
|
| | | self.AddTreasureScore = 0
|
| | | self.AddMoneyType = 0
|
| | | self.AddMoneyValue = 0
|
| | | self.AddTreasureLuck = 0
|
| | | self.TreasureResultLen = 0
|
| | | self.TreasureResult = ""
|
| | |
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.AddTreasureScore)
|
| | | data = CommFunc.WriteBYTE(data, self.AddMoneyType)
|
| | | data = CommFunc.WriteWORD(data, self.AddMoneyValue)
|
| | | data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
|
| | | data = CommFunc.WriteWORD(data, self.TreasureResultLen)
|
| | | data = CommFunc.WriteString(data, self.TreasureResultLen, self.TreasureResult)
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AddTreasureScore:%d,
|
| | | AddMoneyType:%d,
|
| | | AddMoneyValue:%d,
|
| | | AddTreasureLuck:%d,
|
| | | TreasureResultLen:%d,
|
| | | TreasureResult:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AddTreasureScore,
|
| | | self.AddMoneyType,
|
| | | self.AddMoneyValue,
|
| | | self.AddTreasureLuck,
|
| | | self.TreasureResultLen,
|
| | | self.TreasureResult
|
| | |
| | | class tagRefreshType(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RefreshType", c_ubyte), |
| | | ("RefreshType", c_ushort), |
| | | ("Value", c_int),
|
| | | ("ValueEx", c_int),
|
| | | ]
|
| | |
| | | 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):
|
| | |
| | | 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):
|
| | |
| | | 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
|
| | |
|
| | |
| | | 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
|
| | |
| | | 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)// 限制等级
|
| | | ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
|
| | | 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):
|
| | |
| | | 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.ShopType,_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):
|
| | |
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.ShopType = 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):
|
| | |
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 5
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | 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
|
| | |
|
| | |
| | | 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.WriteWORD(data, self.ShopType)
|
| | | 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):
|
| | |
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | ShopType:%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.ShopType,
|
| | | self.SubResetType,
|
| | | self.SubmitCount,
|
| | | "...",
|
| | | self.BillardCount,
|
| | | self.PersonalBillCount,
|
| | | "...",
|
| | | self.FamilyBillCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | ("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):
|
| | |
| | | self.SubCmd = 0x68
|
| | | self.ActNum = 0
|
| | | self.SubmitCount = 0
|
| | | self.SubmitCountAward = 0
|
| | | self.SubmitAwardCount = 0
|
| | | self.SubmitAwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | 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
|
| | |
|
| | |
|
| | | m_NAtagMCActBossTrialPlayerInfo=tagMCActBossTrialPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBossTrialPlayerInfo.Cmd,m_NAtagMCActBossTrialPlayerInfo.SubCmd))] = m_NAtagMCActBossTrialPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 74 购买次数礼包活动信息 #tagMCActBuyCountGiftInfo
|
| | |
|
| | | class tagMCActBuyCountGiftItem(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(tagMCActBuyCountGiftItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 74 购买次数礼包活动信息 //tagMCActBuyCountGiftInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActBuyCountGift(Structure):
|
| | | NeedBuyCount = 0 #(BYTE NeedBuyCount)// 所需总购买次数,0为免费领取的档次
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActBuyCountGiftItem> AwardItemList)// 奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NeedBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActBuyCountGiftItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NeedBuyCount = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.NeedBuyCount)
|
| | | 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 = '''
|
| | | NeedBuyCount:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedBuyCount,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActBuyCountGiftInfo(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)// 是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | CTGIDCount = 0 #(BYTE CTGIDCount)
|
| | | CTGIDList = list() #(vector<WORD> CTGIDList)// CTGID列表;总购买次数前端自己统计,直接取CTGID对应的累计购买次数累加
|
| | | GiftCount = 0 #(BYTE GiftCount)
|
| | | BuyCountGiftList = list() #(vector<tagMCActBuyCountGift> BuyCountGiftList)// 购买次数礼包列表
|
| | | ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x74
|
| | | 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CTGIDCount):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.CTGIDList.append(value)
|
| | | self.GiftCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftCount):
|
| | | temBuyCountGiftList = tagMCActBuyCountGift()
|
| | | _pos = temBuyCountGiftList.ReadData(_lpData, _pos)
|
| | | self.BuyCountGiftList.append(temBuyCountGiftList)
|
| | | self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x74
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.CTGIDCount = 0
|
| | | self.CTGIDList = list()
|
| | | self.GiftCount = 0
|
| | | self.BuyCountGiftList = list()
|
| | | self.ShopType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2 * self.CTGIDCount
|
| | | length += 1
|
| | | for i in range(self.GiftCount):
|
| | | length += self.BuyCountGiftList[i].GetLength()
|
| | | length += 2
|
| | |
|
| | | 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.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.CTGIDCount)
|
| | | for i in range(self.CTGIDCount):
|
| | | data = CommFunc.WriteWORD(data, self.CTGIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.GiftCount)
|
| | | for i in range(self.GiftCount):
|
| | | data = CommFunc.WriteString(data, self.BuyCountGiftList[i].GetLength(), self.BuyCountGiftList[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.ShopType)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | CTGIDCount:%d,
|
| | | CTGIDList:%s,
|
| | | GiftCount:%d,
|
| | | BuyCountGiftList:%s,
|
| | | ShopType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.CTGIDCount,
|
| | | "...",
|
| | | self.GiftCount,
|
| | | "...",
|
| | | self.ShopType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActBuyCountGiftInfo=tagMCActBuyCountGiftInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyCountGiftInfo.Head.Cmd,m_NAtagMCActBuyCountGiftInfo.Head.SubCmd))] = m_NAtagMCActBuyCountGiftInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 75 购买次数礼包活动玩家信息 #tagMCActBuyCountGiftPlayerInfo
|
| | |
|
| | | class tagMCActBuyCountGiftPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("GiftAwardRecord", c_int), # 购买次数礼包领奖记录,直接用购买次数做位运算判断是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x75
|
| | | 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 = 0x75
|
| | | self.ActNum = 0
|
| | | self.GiftAwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActBuyCountGiftPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 75 购买次数礼包活动玩家信息 //tagMCActBuyCountGiftPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | GiftAwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.GiftAwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActBuyCountGiftPlayerInfo=tagMCActBuyCountGiftPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyCountGiftPlayerInfo.Cmd,m_NAtagMCActBuyCountGiftPlayerInfo.SubCmd))] = m_NAtagMCActBuyCountGiftPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCActCollectWordsPlayerInfo=tagMCActCollectWordsPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsPlayerInfo.Head.Cmd,m_NAtagMCActCollectWordsPlayerInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 77 仙盟充值互助活动信息 #tagMCActFamilyCTGAssistInfo
|
| | |
|
| | | class tagMCActFamilyCTGAssistItem(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(tagMCActFamilyCTGAssistItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 77 仙盟充值互助活动信息 //tagMCActFamilyCTGAssistInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActFamilyCTGAssistAward(Structure):
|
| | | NeedCTGPlayers = 0 #(BYTE NeedCTGPlayers)//所需充值人数
|
| | | RecordIndex = 0 #(BYTE RecordIndex)//对应领奖记录索引
|
| | | Count = 0 #(BYTE Count)
|
| | | AwardItemList = list() #(vector<tagMCActFamilyCTGAssistItem> AwardItemList)// 奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NeedCTGPlayers,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RecordIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActFamilyCTGAssistItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NeedCTGPlayers = 0
|
| | | self.RecordIndex = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.NeedCTGPlayers)
|
| | | data = CommFunc.WriteBYTE(data, self.RecordIndex)
|
| | | 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 = '''
|
| | | NeedCTGPlayers:%d,
|
| | | RecordIndex:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedCTGPlayers,
|
| | | self.RecordIndex,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActFamilyCTGAssistInfo(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)// 限制等级
|
| | | AwardCount = 0 #(BYTE AwardCount)
|
| | | AwardInfoList = list() #(vector<tagMCActFamilyCTGAssistAward> AwardInfoList)// 互助奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x77
|
| | | 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.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardCount):
|
| | | temAwardInfoList = tagMCActFamilyCTGAssistAward()
|
| | | _pos = temAwardInfoList.ReadData(_lpData, _pos)
|
| | | self.AwardInfoList.append(temAwardInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x77
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.AwardCount = 0
|
| | | self.AwardInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.AwardCount):
|
| | | length += self.AwardInfoList[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.AwardCount)
|
| | | for i in range(self.AwardCount):
|
| | | data = CommFunc.WriteString(data, self.AwardInfoList[i].GetLength(), self.AwardInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | AwardCount:%d,
|
| | | AwardInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.AwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActFamilyCTGAssistInfo=tagMCActFamilyCTGAssistInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActFamilyCTGAssistInfo.Head.Cmd,m_NAtagMCActFamilyCTGAssistInfo.Head.SubCmd))] = m_NAtagMCActFamilyCTGAssistInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 78 仙盟充值互助活动玩家信息 #tagMCActFamilyCTGAssistPlayerInfo
|
| | |
|
| | | class tagMCActFamilyCTGAssistPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("AwardRecord", c_int), # 奖励记录,按奖励记录索引位运算判断是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x78
|
| | | 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 = 0x78
|
| | | self.ActNum = 0
|
| | | self.AwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActFamilyCTGAssistPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 78 仙盟充值互助活动玩家信息 //tagMCActFamilyCTGAssistPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | AwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.AwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActFamilyCTGAssistPlayerInfo=tagMCActFamilyCTGAssistPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActFamilyCTGAssistPlayerInfo.Cmd,m_NAtagMCActFamilyCTGAssistPlayerInfo.SubCmd))] = m_NAtagMCActFamilyCTGAssistPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | class tagMCActGrowupBuyCTGInfo(Structure):
|
| | | CTGID = 0 #(BYTE CTGID)// 充值表ID
|
| | | CTGID = 0 #(WORD CTGID)// 充值表ID
|
| | | GainItemCount = 0 #(BYTE GainItemCount)// 获得物品数
|
| | | GainItemList = list() #(vector<tagMCActGrowupBuyCTGItem> GainItemList)// 获得物品列表,替换充值表中的 GainItemList 字段信息
|
| | | data = None
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.CTGID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GainItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GainItemCount):
|
| | | temGainItemList = tagMCActGrowupBuyCTGItem()
|
| | |
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.GainItemCount):
|
| | | length += self.GainItemList[i].GetLength()
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.CTGID)
|
| | | data = CommFunc.WriteWORD(data, self.CTGID)
|
| | | data = CommFunc.WriteBYTE(data, self.GainItemCount)
|
| | | for i in range(self.GainItemCount):
|
| | | data = CommFunc.WriteString(data, self.GainItemList[i].GetLength(), self.GainItemList[i].GetBuffer())
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 81 古宝养成活动信息 #tagMCActGubaoInfo
|
| | |
|
| | | class tagMCActGubaoItem(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(tagMCActGubaoItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 81 古宝养成活动信息 //tagMCActGubaoInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | 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 = tagMCActGubaoItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[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())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGubaoInfo(Structure):
|
| | | Head = tagHead()
|
| | | 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
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x81
|
| | | 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.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCActGubaoBillard()
|
| | | _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
|
| | | self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x81
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.LimitLV = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 5
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[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.WriteString(data, 5, self.JoinStartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | LimitLV:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.LimitLV,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGubaoInfo=tagMCActGubaoInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGubaoInfo.Head.Cmd,m_NAtagMCActGubaoInfo.Head.SubCmd))] = m_NAtagMCActGubaoInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 82 古宝养成活动玩家信息 #tagMCActGubaoPlayerInfo
|
| | |
|
| | | class tagMCActGubaoPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("Score", c_int), # 当前积分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x82
|
| | | 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 = 0x82
|
| | | self.ActNum = 0
|
| | | self.Score = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActGubaoPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 82 古宝养成活动玩家信息 //tagMCActGubaoPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | Score:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.Score
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGubaoPlayerInfo=tagMCActGubaoPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGubaoPlayerInfo.Cmd,m_NAtagMCActGubaoPlayerInfo.SubCmd))] = m_NAtagMCActGubaoPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 54 骑宠盛宴活动信息 #tagMCActHorsePetFeastInfo
|
| | |
|
| | | class tagMCActHorsePetFeastTime(Structure):
|
| | |
| | |
|
| | | m_NAtagMCActHorsePetFeastInfo=tagMCActHorsePetFeastInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetFeastInfo.Head.Cmd,m_NAtagMCActHorsePetFeastInfo.Head.SubCmd))] = m_NAtagMCActHorsePetFeastInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 84 骑宠养成活动信息 #tagMCActHorsePetTrainInfo
|
| | |
|
| | | class tagMCActHorsePetTrainItem(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(tagMCActHorsePetTrainItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 84 骑宠养成活动信息 //tagMCActHorsePetTrainInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActHorsePetTrainBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 奖励物品列表
|
| | | 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 = tagMCActHorsePetTrainItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[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())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActHorsePetTrainInfo(Structure):
|
| | | Head = tagHead()
|
| | | 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
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCActHorsePetTrainBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x84
|
| | | 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.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCActHorsePetTrainBillard()
|
| | | _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
|
| | | self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x84
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.LimitLV = 0
|
| | | self.ShopType = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 5
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[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.WriteString(data, 5, self.JoinStartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteWORD(data, self.ShopType)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | LimitLV:%d,
|
| | | ShopType:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.LimitLV,
|
| | | self.ShopType,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActHorsePetTrainInfo=tagMCActHorsePetTrainInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetTrainInfo.Head.Cmd,m_NAtagMCActHorsePetTrainInfo.Head.SubCmd))] = m_NAtagMCActHorsePetTrainInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 85 骑宠养成活动玩家信息 #tagMCActHorsePetTrainPlayerInfo
|
| | |
|
| | | class tagMCActHorsePetTrainPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("Score", c_int), # 当前活动积分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x85
|
| | | 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 = 0x85
|
| | | self.ActNum = 0
|
| | | self.Score = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActHorsePetTrainPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 85 骑宠养成活动玩家信息 //tagMCActHorsePetTrainPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | Score:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.Score
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActHorsePetTrainPlayerInfo=tagMCActHorsePetTrainPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetTrainPlayerInfo.Cmd,m_NAtagMCActHorsePetTrainPlayerInfo.SubCmd))] = m_NAtagMCActHorsePetTrainPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 69 登录活动信息新 #tagMCActLoginNew
|
| | |
|
| | | class tagMCActLoginNewItem(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(tagMCActLoginNewItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 69 登录活动信息新 //tagMCActLoginNew:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginNewDay(Structure):
|
| | | DayNum = 0 #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActLoginNewItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayNum = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.DayNum)
|
| | | 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 = '''
|
| | | DayNum:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayNum,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginNew(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | RepSignMoneyType = 0 #(BYTE RepSignMoneyType)// 补签消耗货币类型
|
| | | RepSignMoneyValue = 0 #(DWORD RepSignMoneyValue)// 补签消耗货币值
|
| | | DayCount = 0 #(BYTE DayCount)
|
| | | AwardDayList = list() #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x69
|
| | | 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DayCount):
|
| | | temAwardDayList = tagMCActLoginNewDay()
|
| | | _pos = temAwardDayList.ReadData(_lpData, _pos)
|
| | | self.AwardDayList.append(temAwardDayList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x69
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.RepSignMoneyType = 0
|
| | | self.RepSignMoneyValue = 0
|
| | | self.DayCount = 0
|
| | | self.AwardDayList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.DayCount):
|
| | | length += self.AwardDayList[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.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.RepSignMoneyType)
|
| | | data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue)
|
| | | data = CommFunc.WriteBYTE(data, self.DayCount)
|
| | | for i in range(self.DayCount):
|
| | | data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | RepSignMoneyType:%d,
|
| | | RepSignMoneyValue:%d,
|
| | | DayCount:%d,
|
| | | AwardDayList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.RepSignMoneyType,
|
| | | self.RepSignMoneyValue,
|
| | | self.DayCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginNew=tagMCActLoginNew()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginNew.Head.Cmd,m_NAtagMCActLoginNew.Head.SubCmd))] = m_NAtagMCActLoginNew
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 70 登录活动玩家信息新 #tagMCActLoginPlayerInfoNew
|
| | |
|
| | | class tagMCActLoginPlayerInfoNew(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x70
|
| | | 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 = 0x70
|
| | | self.ActNum = 0
|
| | | self.LoginAward = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActLoginPlayerInfoNew)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 70 登录活动玩家信息新 //tagMCActLoginPlayerInfoNew:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | LoginAward:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.LoginAward
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginPlayerInfoNew=tagMCActLoginPlayerInfoNew()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginPlayerInfoNew.Cmd,m_NAtagMCActLoginPlayerInfoNew.SubCmd))] = m_NAtagMCActLoginPlayerInfoNew
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 71 任务活动信息 #tagMCActTaskInfo
|
| | |
|
| | | class tagMCActTaskItem(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(tagMCActTaskItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 71 任务活动信息 //tagMCActTaskInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActTask(Structure):
|
| | | TaskID = 0 #(DWORD TaskID)// 任务ID,1~n
|
| | | TaskType = 0 #(BYTE TaskType)// 任务类型
|
| | | NeedValue = 0 #(DWORD NeedValue)// 完成任务所需值
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActTaskItem> AwardItemList)// 奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TaskID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TaskType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActTaskItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TaskID = 0
|
| | | self.TaskType = 0
|
| | | self.NeedValue = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.TaskID)
|
| | | data = CommFunc.WriteBYTE(data, self.TaskType)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedValue)
|
| | | 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 = '''
|
| | | TaskID:%d,
|
| | | TaskType:%d,
|
| | | NeedValue:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.TaskID,
|
| | | self.TaskType,
|
| | | self.NeedValue,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActTaskInfo(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)// 是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | TaskCount = 0 #(BYTE TaskCount)
|
| | | TaskList = list() #(vector<tagMCActTask> TaskList)// 任务列表
|
| | | RoundMax = 0 #(BYTE RoundMax)// 最大可循环轮次,当小于等于1时代表不循环
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x71
|
| | | 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TaskCount):
|
| | | temTaskList = tagMCActTask()
|
| | | _pos = temTaskList.ReadData(_lpData, _pos)
|
| | | self.TaskList.append(temTaskList)
|
| | | self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x71
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.TaskCount = 0
|
| | | self.TaskList = list()
|
| | | self.RoundMax = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.TaskCount):
|
| | | length += self.TaskList[i].GetLength()
|
| | | length += 1
|
| | |
|
| | | 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.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.TaskCount)
|
| | | for i in range(self.TaskCount):
|
| | | data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RoundMax)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | TaskCount:%d,
|
| | | TaskList:%s,
|
| | | RoundMax:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.TaskCount,
|
| | | "...",
|
| | | self.RoundMax
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActTaskInfo=tagMCActTaskInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTaskInfo.Head.Cmd,m_NAtagMCActTaskInfo.Head.SubCmd))] = m_NAtagMCActTaskInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 73 任务活动玩家信息 #tagMCActTaskPlayerInfo
|
| | |
|
| | | class tagMCActTaskPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | AwardCount = 0 #(BYTE AwardCount)
|
| | | AwardRecordList = list() #(vector<DWORD> AwardRecordList)// 任务ID领奖记录值列表,根据任务ID位判断是否已领取,一个记录值存31位 [记录值0, 记录值1, ...]
|
| | | RoundNum = 0 #(BYTE RoundNum)// 当前轮次,从1开始
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x73
|
| | | 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.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.AwardRecordList.append(value)
|
| | | self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x73
|
| | | self.ActNum = 0
|
| | | self.AwardCount = 0
|
| | | self.AwardRecordList = list()
|
| | | self.RoundNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.AwardCount
|
| | | length += 1
|
| | |
|
| | | 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.AwardCount)
|
| | | for i in range(self.AwardCount):
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecordList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.RoundNum)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | AwardCount:%d,
|
| | | AwardRecordList:%s,
|
| | | RoundNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.AwardCount,
|
| | | "...",
|
| | | self.RoundNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActTaskPlayerInfo=tagMCActTaskPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTaskPlayerInfo.Head.Cmd,m_NAtagMCActTaskPlayerInfo.Head.SubCmd))] = m_NAtagMCActTaskPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 72 任务活动玩家任务值 #tagMCActTaskPlayerValueInfo
|
| | |
|
| | | class tagMCActTaskPlayerValue(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TaskType", c_ubyte), # 任务类型
|
| | | ("TaskValue", 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.TaskType = 0
|
| | | self.TaskValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActTaskPlayerValue)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 72 任务活动玩家任务值 //tagMCActTaskPlayerValueInfo:
|
| | | TaskType:%d,
|
| | | TaskValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.TaskType,
|
| | | self.TaskValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActTaskPlayerValueInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | TaskCount = 0 #(BYTE TaskCount)
|
| | | TaskValueList = list() #(vector<tagMCActTaskPlayerValue> TaskValueList)// 有同步的任务类型直接覆盖即可
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x72
|
| | | 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.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TaskCount):
|
| | | temTaskValueList = tagMCActTaskPlayerValue()
|
| | | _pos = temTaskValueList.ReadData(_lpData, _pos)
|
| | | self.TaskValueList.append(temTaskValueList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x72
|
| | | self.ActNum = 0
|
| | | self.TaskCount = 0
|
| | | self.TaskValueList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.TaskCount):
|
| | | length += self.TaskValueList[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.TaskCount)
|
| | | for i in range(self.TaskCount):
|
| | | data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | TaskCount:%d,
|
| | | TaskValueList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.TaskCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActTaskPlayerValueInfo=tagMCActTaskPlayerValueInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTaskPlayerValueInfo.Head.Cmd,m_NAtagMCActTaskPlayerValueInfo.Head.SubCmd))] = m_NAtagMCActTaskPlayerValueInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo
|
| | |
|
| | | class tagMCTotalRechargeAwardItem(Structure):
|
| | |
| | | ("ItemCount", c_ushort),
|
| | | ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
|
| | | ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
|
| | | ("LotteryScore", c_int), #当前抽奖积分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ItemCount = 0
|
| | | self.PosNum = 0
|
| | | self.TotalTimesNow = 0
|
| | | self.LotteryScore = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | PosNum:%d,
|
| | | TotalTimesNow:%d
|
| | | TotalTimesNow:%d,
|
| | | LotteryScore:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | |
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.PosNum,
|
| | | self.TotalTimesNow
|
| | | self.TotalTimesNow,
|
| | | self.LotteryScore
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | #------------------------------------------------------
|
| | | # AA 58 仙匣秘境活动信息 #tagMCActXianXiaMJInfo
|
| | |
|
| | | class tagMCActXianXiaMJAwardItem(Structure):
|
| | | class tagMCActXianXiaMJItem(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(tagMCActXianXiaMJItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | 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 = tagMCActXianXiaMJItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[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())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJInfo(Structure):
|
| | | Head = tagHead()
|
| | | 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)// 是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | UseItemID = 0 #(DWORD UseItemID)//消耗物品ID,默认1个;消耗物品或货币二选一即可,或都配则先消耗道具,不足则消耗货币
|
| | | MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
|
| | | MoneyValue = 0 #(WORD MoneyValue)//消耗货币值
|
| | | LotteryAddScore = 0 #(WORD LotteryAddScore)//每次抽奖加积分
|
| | | LayerAddScore = 0 #(WORD LayerAddScore)//每次跨层加积分
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x58
|
| | | 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.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LotteryAddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LayerAddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCActXianXiaMJBillard()
|
| | | _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
|
| | | self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x58
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.UseItemID = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | self.LotteryAddScore = 0
|
| | | self.LayerAddScore = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 5
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[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.WriteString(data, 5, self.JoinStartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteDWORD(data, self.UseItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | | data = CommFunc.WriteWORD(data, self.MoneyValue)
|
| | | data = CommFunc.WriteWORD(data, self.LotteryAddScore)
|
| | | data = CommFunc.WriteWORD(data, self.LayerAddScore)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | UseItemID:%d,
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d,
|
| | | LotteryAddScore:%d,
|
| | | LayerAddScore:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.UseItemID,
|
| | | self.MoneyType,
|
| | | self.MoneyValue,
|
| | | self.LotteryAddScore,
|
| | | self.LayerAddScore,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 79 仙匣秘境层信息 #tagMCActXianXiaMJLayerInfo
|
| | |
|
| | | class tagMCActXianXiaMJLayerItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
|
| | |
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActXianXiaMJAwardItem)
|
| | | return sizeof(tagMCActXianXiaMJLayerItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo:
|
| | | DumpString = '''// AA 79 仙匣秘境层信息 //tagMCActXianXiaMJLayerInfo:
|
| | | ItemLibType:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJInfo(Structure):
|
| | | class tagMCActXianXiaMJLayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
|
| | | MoneyValue = 0 #(WORD MoneyValue)//消耗货币值
|
| | | LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层
|
| | | LayerNum = 0 #(WORD LayerNum)//当前奖池第几层
|
| | | LotteryScore = 0 #(DWORD LotteryScore)//当前抽奖积分
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJLayerItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
|
| | | SuperItemCount = 0 #(BYTE SuperItemCount)
|
| | | SuperItemList = list() #(vector<tagMCActXianXiaMJAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
|
| | | SuperItemList = list() #(vector<tagMCActXianXiaMJLayerItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
|
| | | SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x58
|
| | | self.Head.SubCmd = 0x79
|
| | | 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LayerNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LotteryScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCActXianXiaMJAwardItem()
|
| | | temAwardItemList = tagMCActXianXiaMJLayerItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SuperItemCount):
|
| | | temSuperItemList = tagMCActXianXiaMJAwardItem()
|
| | | temSuperItemList = tagMCActXianXiaMJLayerItem()
|
| | | _pos = temSuperItemList.ReadData(_lpData, _pos)
|
| | | self.SuperItemList.append(temSuperItemList)
|
| | | self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x58
|
| | | self.Head.SubCmd = 0x79
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.ResetType = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | self.LayerNum = 0
|
| | | self.LotteryScore = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | self.SuperItemCount = 0
|
| | |
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
| | | 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.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | | data = CommFunc.WriteWORD(data, self.MoneyValue)
|
| | | data = CommFunc.WriteBYTE(data, self.LayerNum)
|
| | | data = CommFunc.WriteWORD(data, self.LayerNum)
|
| | | data = CommFunc.WriteDWORD(data, self.LotteryScore)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | ResetType:%d,
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d,
|
| | | LayerNum:%d,
|
| | | LotteryScore:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s,
|
| | | SuperItemCount:%d,
|
| | |
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.ResetType,
|
| | | self.MoneyType,
|
| | | self.MoneyValue,
|
| | | self.LayerNum,
|
| | | self.LotteryScore,
|
| | | self.AwardItemCount,
|
| | | "...",
|
| | | self.SuperItemCount,
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo
|
| | | m_NAtagMCActXianXiaMJLayerInfo=tagMCActXianXiaMJLayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJLayerInfo.Head.Cmd,m_NAtagMCActXianXiaMJLayerInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJLayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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 83 古宝养成跨服活动信息 #tagMCCrossActGubaoInfo
|
| | |
|
| | | class tagMCCrossActGubaoItem(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(tagMCCrossActGubaoItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 83 古宝养成跨服活动信息 //tagMCCrossActGubaoInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | 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 = tagMCCrossActGubaoItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[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())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActGubaoInfo(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
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x83
|
| | | 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.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActGubaoBillard()
|
| | | _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
|
| | | self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x83
|
| | | self.ServerInfoLen = 0
|
| | | self.ServerIDRangeInfo = ""
|
| | | self.GroupValue1 = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.RankLimitPersonal = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = 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 += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[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.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ServerInfoLen:%d,
|
| | | ServerIDRangeInfo:%s,
|
| | | GroupValue1:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | RankLimitPersonal:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ServerInfoLen,
|
| | | self.ServerIDRangeInfo,
|
| | | self.GroupValue1,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.RankLimitPersonal,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossActGubaoInfo=tagMCCrossActGubaoInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActGubaoInfo.Head.Cmd,m_NAtagMCCrossActGubaoInfo.Head.SubCmd))] = m_NAtagMCCrossActGubaoInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 86 骑宠养成跨服活动信息 #tagMCCrossActHorsePetTrainInfo
|
| | |
|
| | | class tagMCCrossActHorsePetTrainItem(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(tagMCCrossActHorsePetTrainItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 86 骑宠养成跨服活动信息 //tagMCCrossActHorsePetTrainInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActHorsePetTrainBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 奖励物品列表
|
| | | 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 = tagMCCrossActHorsePetTrainItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[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())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActHorsePetTrainInfo(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
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActHorsePetTrainBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x86
|
| | | 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.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActHorsePetTrainBillard()
|
| | | _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
|
| | | self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x86
|
| | | self.ServerInfoLen = 0
|
| | | self.ServerIDRangeInfo = ""
|
| | | self.GroupValue1 = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.RankLimitPersonal = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = 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 += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[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.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ServerInfoLen:%d,
|
| | | ServerIDRangeInfo:%s,
|
| | | GroupValue1:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | RankLimitPersonal:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ServerInfoLen,
|
| | | self.ServerIDRangeInfo,
|
| | | self.GroupValue1,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.RankLimitPersonal,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossActHorsePetTrainInfo=tagMCCrossActHorsePetTrainInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActHorsePetTrainInfo.Head.Cmd,m_NAtagMCCrossActHorsePetTrainInfo.Head.SubCmd))] = m_NAtagMCCrossActHorsePetTrainInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 80 仙匣秘境跨服活动信息 #tagMCCrossActXianXiaMJInfo
|
| | |
|
| | | class tagMCCrossActXianXiaMJItem(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(tagMCCrossActXianXiaMJItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 80 仙匣秘境跨服活动信息 //tagMCCrossActXianXiaMJInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | 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 = tagMCCrossActXianXiaMJItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[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())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActXianXiaMJInfo(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)// 是否每天重置
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x80
|
| | | 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.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard()
|
| | | _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
|
| | | self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x80
|
| | | self.ServerInfoLen = 0
|
| | | self.ServerIDRangeInfo = ""
|
| | | self.GroupValue1 = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.IsDayReset = 0
|
| | | self.RankLimitPersonal = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = 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 += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[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.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[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,
|
| | | RankLimitPersonal:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ServerInfoLen,
|
| | | self.ServerIDRangeInfo,
|
| | | self.GroupValue1,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.IsDayReset,
|
| | | self.RankLimitPersonal,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossActXianXiaMJInfo=tagMCCrossActXianXiaMJInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActXianXiaMJInfo.Head.Cmd,m_NAtagMCCrossActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCCrossActXianXiaMJInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo
|
| | |
|
| | | class tagMCDailyGiftbagItem(Structure):
|
| | |
| | | RMB = 0 #(DWORD RMB)//所需RMB,元
|
| | | GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
|
| | | ItemInfo = list() #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息
|
| | | Discount = 0 #(WORD Discount)// 折扣力度百分比
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temItemInfo = tagMCDailyGiftbagItem()
|
| | | _pos = temItemInfo.ReadData(_lpData, _pos)
|
| | | self.ItemInfo.append(temItemInfo)
|
| | | self.Discount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.RMB = 0
|
| | | self.GiftItemCount = 0
|
| | | self.ItemInfo = list()
|
| | | self.Discount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.GiftItemCount):
|
| | | length += self.ItemInfo[i].GetLength()
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.GiftItemCount)
|
| | | for i in range(self.GiftItemCount):
|
| | | data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Discount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | BuyCountLimit:%d,
|
| | | RMB:%d,
|
| | | GiftItemCount:%d,
|
| | | ItemInfo:%s
|
| | | ItemInfo:%s,
|
| | | Discount:%d
|
| | | '''\
|
| | | %(
|
| | | self.GiftID,
|
| | |
| | | self.BuyCountLimit,
|
| | | self.RMB,
|
| | | self.GiftItemCount,
|
| | | "..."
|
| | | "...",
|
| | | self.Discount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 30 玩家福地相关信息 #tagMCPlayerMineAreaInfo
|
| | |
|
| | | class tagMCPlayerMineAreaInfo(Structure):
|
| | | Head = tagHead()
|
| | | WorkerCount = 0 #(BYTE WorkerCount)// 已雇佣工人数
|
| | | EnergyUsed = 0 #(WORD EnergyUsed)// 今日已消耗体力
|
| | | RefreshCount = 0 #(DWORD RefreshCount)// 今日福地刷新物品次数 - 普通刷新
|
| | | RefreshCountSuper = 0 #(BYTE RefreshCountSuper)// 今日福地刷新物品次数 - 超级刷新
|
| | | TreasureCount = 0 #(BYTE TreasureCount)// 聚宝盆类型个数,对应类型 0~n
|
| | | TreasureState = list() #(vector<BYTE> TreasureState)// 聚宝盆是否已激活列表,[类型0是否已激活, ...]
|
| | | TreasureAward = list() #(vector<BYTE> TreasureAward)// 聚宝盆奖励是否已领取列表,[类型0是否已领取, ...]
|
| | | TreasureProgress = list() #(vector<BYTE> TreasureProgress)// 聚宝盆进度值列表,[类型0进度值, ...],满进度100
|
| | | HelpAwardCount = 0 #(BYTE HelpAwardCount)// 今日已帮助别人奖励次数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x30
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.WorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EnergyUsed,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RefreshCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RefreshCountSuper,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TreasureCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TreasureCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.TreasureState.append(value)
|
| | | for i in range(self.TreasureCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.TreasureAward.append(value)
|
| | | for i in range(self.TreasureCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.TreasureProgress.append(value)
|
| | | self.HelpAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x30
|
| | | self.WorkerCount = 0
|
| | | self.EnergyUsed = 0
|
| | | self.RefreshCount = 0
|
| | | self.RefreshCountSuper = 0
|
| | | self.TreasureCount = 0
|
| | | self.TreasureState = list()
|
| | | self.TreasureAward = list()
|
| | | self.TreasureProgress = list()
|
| | | self.HelpAwardCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1 * self.TreasureCount
|
| | | length += 1 * self.TreasureCount
|
| | | length += 1 * self.TreasureCount
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WorkerCount)
|
| | | data = CommFunc.WriteWORD(data, self.EnergyUsed)
|
| | | data = CommFunc.WriteDWORD(data, self.RefreshCount)
|
| | | data = CommFunc.WriteBYTE(data, self.RefreshCountSuper)
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureCount)
|
| | | for i in range(self.TreasureCount):
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureState[i])
|
| | | for i in range(self.TreasureCount):
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureAward[i])
|
| | | for i in range(self.TreasureCount):
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureProgress[i])
|
| | | data = CommFunc.WriteBYTE(data, self.HelpAwardCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | WorkerCount:%d,
|
| | | EnergyUsed:%d,
|
| | | RefreshCount:%d,
|
| | | RefreshCountSuper:%d,
|
| | | TreasureCount:%d,
|
| | | TreasureState:%s,
|
| | | TreasureAward:%s,
|
| | | TreasureProgress:%s,
|
| | | HelpAwardCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.WorkerCount,
|
| | | self.EnergyUsed,
|
| | | self.RefreshCount,
|
| | | self.RefreshCountSuper,
|
| | | self.TreasureCount,
|
| | | "...",
|
| | | "...",
|
| | | "...",
|
| | | self.HelpAwardCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCPlayerMineAreaInfo=tagMCPlayerMineAreaInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerMineAreaInfo.Head.Cmd,m_NAtagMCPlayerMineAreaInfo.Head.SubCmd))] = m_NAtagMCPlayerMineAreaInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
|
| | |
|
| | | class tagMCTodayAssistMoneyInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 09 玩家挂机系统信息 #tagMCGuajiInfo
|
| | |
|
| | | class tagMCGuajiMoney(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("MoneyType", c_ubyte), |
| | | ("MoneyValue", 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.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGuajiMoney)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 09 玩家挂机系统信息 //tagMCGuajiInfo:
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.MoneyType,
|
| | | self.MoneyValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGuajiItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("Count", c_ushort), |
| | | ]
|
| | |
|
| | | 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
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGuajiItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 09 玩家挂机系统信息 //tagMCGuajiInfo:
|
| | | ItemID:%d,
|
| | | Count:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.Count
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGuajiInfo(Structure):
|
| | | Head = tagHead()
|
| | | QuickAwardCount = 0 #(BYTE QuickAwardCount)// 今日已快速挂机收益次数
|
| | | AwardType = 0 #(BYTE AwardType)// 收益类型: 0-已累计预览;1-领取结算结果(包含常规领取跟快速领取)
|
| | | AwardSeconds = 0 #(DWORD AwardSeconds)// 已累计收益时长,秒
|
| | | Exp = 0 #(DWORD Exp)// 已累计经验,求余亿部分
|
| | | ExpPoint = 0 #(DWORD ExpPoint)// 已累计经验,整除亿部分
|
| | | MoneyLen = 0 #(BYTE MoneyLen)
|
| | | MoneyList = list() #(vector<tagMCGuajiMoney> MoneyList)// 已累计货币
|
| | | ItemLen = 0 #(BYTE ItemLen)
|
| | | ItemList = list() #(vector<tagMCGuajiItem> ItemList)// 已累计物品
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x09
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.QuickAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardSeconds,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.MoneyLen):
|
| | | temMoneyList = tagMCGuajiMoney()
|
| | | _pos = temMoneyList.ReadData(_lpData, _pos)
|
| | | self.MoneyList.append(temMoneyList)
|
| | | self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ItemLen):
|
| | | temItemList = tagMCGuajiItem()
|
| | | _pos = temItemList.ReadData(_lpData, _pos)
|
| | | self.ItemList.append(temItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x09
|
| | | self.QuickAwardCount = 0
|
| | | self.AwardType = 0
|
| | | self.AwardSeconds = 0
|
| | | self.Exp = 0
|
| | | self.ExpPoint = 0
|
| | | self.MoneyLen = 0
|
| | | self.MoneyList = list()
|
| | | self.ItemLen = 0
|
| | | self.ItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.MoneyLen):
|
| | | length += self.MoneyList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.ItemLen):
|
| | | 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.QuickAwardCount)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardType)
|
| | | data = CommFunc.WriteDWORD(data, self.AwardSeconds)
|
| | | data = CommFunc.WriteDWORD(data, self.Exp)
|
| | | data = CommFunc.WriteDWORD(data, self.ExpPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyLen)
|
| | | for i in range(self.MoneyLen):
|
| | | data = CommFunc.WriteString(data, self.MoneyList[i].GetLength(), self.MoneyList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ItemLen)
|
| | | for i in range(self.ItemLen):
|
| | | data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | QuickAwardCount:%d,
|
| | | AwardType:%d,
|
| | | AwardSeconds:%d,
|
| | | Exp:%d,
|
| | | ExpPoint:%d,
|
| | | MoneyLen:%d,
|
| | | MoneyList:%s,
|
| | | ItemLen:%d,
|
| | | ItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.QuickAwardCount,
|
| | | self.AwardType,
|
| | | self.AwardSeconds,
|
| | | self.Exp,
|
| | | self.ExpPoint,
|
| | | self.MoneyLen,
|
| | | "...",
|
| | | self.ItemLen,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGuajiInfo=tagMCGuajiInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGuajiInfo.Head.Cmd,m_NAtagMCGuajiInfo.Head.SubCmd))] = m_NAtagMCGuajiInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 12 培养功能境界信息 #tagMCTrainRealmLVInfo
|
| | |
|
| | | class tagMCTrainRealmLV(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("FuncType", c_ubyte), # 功能类型:1-坐骑;2-灵宠;3-灵器
|
| | | ("TrainRealmLV", c_ushort), # 境界培养卡境界等级,实际有效境界等级取自身境界与该值中的最大值;
|
| | | ]
|
| | |
|
| | | 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.FuncType = 0
|
| | | self.TrainRealmLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTrainRealmLV)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 12 培养功能境界信息 //tagMCTrainRealmLVInfo:
|
| | | FuncType:%d,
|
| | | TrainRealmLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.FuncType,
|
| | | self.TrainRealmLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTrainRealmLVInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | InfoList = list() #(vector<tagMCTrainRealmLV> InfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x12
|
| | | 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):
|
| | | temInfoList = tagMCTrainRealmLV()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x12
|
| | | self.Count = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | 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.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_NAtagMCTrainRealmLVInfo=tagMCTrainRealmLVInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTrainRealmLVInfo.Head.Cmd,m_NAtagMCTrainRealmLVInfo.Head.SubCmd))] = m_NAtagMCTrainRealmLVInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 20 战令信息 #tagMCZhanlingInfo
|
| | |
|
| | | class tagMCZhanling(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("NeedValue", c_int), # 奖励所需值
|
| | | ("FreeRewardState", c_ubyte), # 免费战令奖励是否已领取
|
| | | ("ZLRewardState", c_ubyte), # 普通战令奖励是否已领取
|
| | | ("ZLRewardStateH", 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.NeedValue = 0
|
| | | self.FreeRewardState = 0
|
| | | self.ZLRewardState = 0
|
| | | self.ZLRewardStateH = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCZhanling)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 20 战令信息 //tagMCZhanlingInfo:
|
| | | NeedValue:%d,
|
| | | FreeRewardState:%d,
|
| | | ZLRewardState:%d,
|
| | | ZLRewardStateH:%d
|
| | | '''\
|
| | | %(
|
| | | self.NeedValue,
|
| | | self.FreeRewardState,
|
| | | self.ZLRewardState,
|
| | | self.ZLRewardStateH
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCZhanlingInfo(Structure):
|
| | | Head = tagHead()
|
| | | ZhanlingType = 0 #(BYTE ZhanlingType)// 战令类型
|
| | | IsActivite = 0 #(BYTE IsActivite)// 普通战令是否已激活
|
| | | IsActiviteH = 0 #(BYTE IsActiviteH)// 高级战令是否已激活
|
| | | Value1 = 0 #(DWORD Value1)// 战令对应的自定义值,可选,如登录战令代表开始计算日期时间戳
|
| | | RewardCount = 0 #(WORD RewardCount)
|
| | | RewardList = list() #(vector<tagMCZhanling> RewardList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZhanlingType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IsActivite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IsActiviteH,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.RewardCount):
|
| | | temRewardList = tagMCZhanling()
|
| | | _pos = temRewardList.ReadData(_lpData, _pos)
|
| | | self.RewardList.append(temRewardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x20
|
| | | self.ZhanlingType = 0
|
| | | self.IsActivite = 0
|
| | | self.IsActiviteH = 0
|
| | | self.Value1 = 0
|
| | | self.RewardCount = 0
|
| | | self.RewardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | for i in range(self.RewardCount):
|
| | | length += self.RewardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZhanlingType)
|
| | | data = CommFunc.WriteBYTE(data, self.IsActivite)
|
| | | data = CommFunc.WriteBYTE(data, self.IsActiviteH)
|
| | | data = CommFunc.WriteDWORD(data, self.Value1)
|
| | | data = CommFunc.WriteWORD(data, self.RewardCount)
|
| | | for i in range(self.RewardCount):
|
| | | data = CommFunc.WriteString(data, self.RewardList[i].GetLength(), self.RewardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZhanlingType:%d,
|
| | | IsActivite:%d,
|
| | | IsActiviteH:%d,
|
| | | Value1:%d,
|
| | | RewardCount:%d,
|
| | | RewardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZhanlingType,
|
| | | self.IsActivite,
|
| | | self.IsActiviteH,
|
| | | self.Value1,
|
| | | self.RewardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCZhanlingInfo=tagMCZhanlingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhanlingInfo.Head.Cmd,m_NAtagMCZhanlingInfo.Head.SubCmd))] = m_NAtagMCZhanlingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 20 回合制战斗状态 #tagMCTurnFightState
|
| | |
|
| | | class tagMCTurnFightState(Structure):
|
| | | Head = tagHead()
|
| | | MapID = 0 #(DWORD MapID)// 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
|
| | | FuncLineID = 0 #(WORD FuncLineID)
|
| | | TagType = 0 #(BYTE TagType)// 战斗目标类型,0-NPC,1-玩家,2-队伍
|
| | | TagID = 0 #(DWORD TagID)// 战斗目标类型对应的ID
|
| | | State = 0 #(BYTE State)// 0-起始状态标记;1-准备完毕;2-战斗中;3-战斗结束;4-结算奖励;5-结束状态标记
|
| | | TurnNum = 0 #(BYTE TurnNum)// 当前轮次
|
| | | TurnMax = 0 #(BYTE TurnMax)// 最大轮次
|
| | | Len = 0 #(WORD Len)
|
| | | Msg = "" #(String Msg)//size = Len
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TagType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TurnNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TurnMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x20
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.TagType = 0
|
| | | self.TagID = 0
|
| | | self.State = 0
|
| | | self.TurnNum = 0
|
| | | self.TurnMax = 0
|
| | | self.Len = 0
|
| | | self.Msg = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += len(self.Msg)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteWORD(data, self.FuncLineID)
|
| | | data = CommFunc.WriteBYTE(data, self.TagType)
|
| | | data = CommFunc.WriteDWORD(data, self.TagID)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteBYTE(data, self.TurnNum)
|
| | | data = CommFunc.WriteBYTE(data, self.TurnMax)
|
| | | data = CommFunc.WriteWORD(data, self.Len)
|
| | | data = CommFunc.WriteString(data, self.Len, self.Msg)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d,
|
| | | TagType:%d,
|
| | | TagID:%d,
|
| | | State:%d,
|
| | | TurnNum:%d,
|
| | | TurnMax:%d,
|
| | | Len:%d,
|
| | | Msg:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.MapID,
|
| | | self.FuncLineID,
|
| | | self.TagType,
|
| | | self.TagID,
|
| | | self.State,
|
| | | self.TurnNum,
|
| | | self.TurnMax,
|
| | | self.Len,
|
| | | self.Msg
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTurnFightState=tagMCTurnFightState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightState.Head.Cmd,m_NAtagMCTurnFightState.Head.SubCmd))] = m_NAtagMCTurnFightState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 09 跨服排位玩家信息 #tagMCChampionshipPlayerInfo
|
| | |
|
| | | class tagMCChampionshipPlayerInfo(Structure):
|
| | |
| | | ("EnterCountWeek", c_int), # 本周总参与次数
|
| | | ("BuyOpenCountWeek", c_int), # 本周总购买召集次数
|
| | | ("HighScoreTotalWeek", c_int), # 本周每日最高分累加总分
|
| | | ("ZoneID", c_ubyte), # 所属分区ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.EnterCountWeek = 0
|
| | | self.BuyOpenCountWeek = 0
|
| | | self.HighScoreTotalWeek = 0
|
| | | self.ZoneID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | HighScoreToday:%d,
|
| | | EnterCountWeek:%d,
|
| | | BuyOpenCountWeek:%d,
|
| | | HighScoreTotalWeek:%d
|
| | | HighScoreTotalWeek:%d,
|
| | | ZoneID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | |
| | | self.HighScoreToday,
|
| | | self.EnterCountWeek,
|
| | | self.BuyOpenCountWeek,
|
| | | self.HighScoreTotalWeek
|
| | | self.HighScoreTotalWeek,
|
| | | self.ZoneID
|
| | | )
|
| | | return DumpString
|
| | |
|