|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagGCArenaBattleRecord(Structure): | 
|---|
|  |  |  | PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID | 
|---|
|  |  |  | PlayerName = ""    #(char PlayerName[33]) | 
|---|
|  |  |  | Job = 0    #(BYTE Job) | 
|---|
|  |  |  | LV = 0    #(WORD LV)//等级 | 
|---|
|  |  |  | RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界 | 
|---|
|  |  |  | FightPower = 0    #(DWORD FightPower)//战力,机器人读等级表取等级对应战力 | 
|---|
|  |  |  | AddScoreLen = 0    #(BYTE AddScoreLen) | 
|---|
|  |  |  | AddScore = ""    #(String AddScore)//本次对战增加的积分,有正负 | 
|---|
|  |  |  | IsWin = 0    #(BYTE IsWin)//是否获胜 | 
|---|
|  |  |  | Time = 0    #(DWORD Time)//时间戳 | 
|---|
|  |  |  | 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.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.AddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen) | 
|---|
|  |  |  | self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.PlayerID = 0 | 
|---|
|  |  |  | self.PlayerName = "" | 
|---|
|  |  |  | self.Job = 0 | 
|---|
|  |  |  | self.LV = 0 | 
|---|
|  |  |  | self.RealmLV = 0 | 
|---|
|  |  |  | self.FightPower = 0 | 
|---|
|  |  |  | self.AddScoreLen = 0 | 
|---|
|  |  |  | self.AddScore = "" | 
|---|
|  |  |  | self.IsWin = 0 | 
|---|
|  |  |  | self.Time = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 33 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += len(self.AddScore) | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.PlayerID) | 
|---|
|  |  |  | data = CommFunc.WriteString(data, 33, self.PlayerName) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.Job) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.LV) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.RealmLV) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.FightPower) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.AddScoreLen) | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.IsWin) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.Time) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | PlayerID:%d, | 
|---|
|  |  |  | PlayerName:%s, | 
|---|
|  |  |  | Job:%d, | 
|---|
|  |  |  | LV:%d, | 
|---|
|  |  |  | RealmLV:%d, | 
|---|
|  |  |  | FightPower:%d, | 
|---|
|  |  |  | AddScoreLen:%d, | 
|---|
|  |  |  | AddScore:%s, | 
|---|
|  |  |  | IsWin:%d, | 
|---|
|  |  |  | Time:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.PlayerID, | 
|---|
|  |  |  | self.PlayerName, | 
|---|
|  |  |  | self.Job, | 
|---|
|  |  |  | self.LV, | 
|---|
|  |  |  | self.RealmLV, | 
|---|
|  |  |  | self.FightPower, | 
|---|
|  |  |  | self.AddScoreLen, | 
|---|
|  |  |  | self.AddScore, | 
|---|
|  |  |  | self.IsWin, | 
|---|
|  |  |  | self.Time | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagGCArenaBattleRecordList(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | RecordCount = 0    #(BYTE RecordCount) | 
|---|
|  |  |  | BattleRecordList = list()    #(vector<tagGCArenaBattleRecord> BattleRecordList)// 对战列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xA9 | 
|---|
|  |  |  | self.Head.SubCmd = 0x23 | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | temBattleRecordList = tagGCArenaBattleRecord() | 
|---|
|  |  |  | _pos = temBattleRecordList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.BattleRecordList.append(temBattleRecordList) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xA9 | 
|---|
|  |  |  | self.Head.SubCmd = 0x23 | 
|---|
|  |  |  | self.RecordCount = 0 | 
|---|
|  |  |  | self.BattleRecordList = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.RecordCount): | 
|---|
|  |  |  | length += self.BattleRecordList[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.BattleRecordList[i].GetLength(), self.BattleRecordList[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | RecordCount:%d, | 
|---|
|  |  |  | BattleRecordList:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.RecordCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagGCArenaBattleRecordList=tagGCArenaBattleRecordList() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattleRecordList.Head.Cmd,m_NAtagGCArenaBattleRecordList.Head.SubCmd))] = m_NAtagGCArenaBattleRecordList | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagGCArenaMatchInfo(Structure): | 
|---|
|  |  |  | PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID | 
|---|
|  |  |  | PlayerName = ""    #(char PlayerName[33]) | 
|---|
|  |  |  | Job = 0    #(BYTE Job) | 
|---|
|  |  |  | LV = 0    #(WORD LV)//等级 | 
|---|
|  |  |  | RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界 | 
|---|
|  |  |  | FightPower = 0    #(DWORD FightPower)//战力,机器人读等级表取等级对应战力 | 
|---|
|  |  |  | Score = 0    #(DWORD Score)//积分 | 
|---|
|  |  |  | 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.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.PlayerID = 0 | 
|---|
|  |  |  | self.PlayerName = "" | 
|---|
|  |  |  | self.Job = 0 | 
|---|
|  |  |  | self.LV = 0 | 
|---|
|  |  |  | self.RealmLV = 0 | 
|---|
|  |  |  | self.FightPower = 0 | 
|---|
|  |  |  | self.Score = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 33 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.PlayerID) | 
|---|
|  |  |  | data = CommFunc.WriteString(data, 33, self.PlayerName) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.Job) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.LV) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.RealmLV) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.FightPower) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.Score) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | PlayerID:%d, | 
|---|
|  |  |  | PlayerName:%s, | 
|---|
|  |  |  | Job:%d, | 
|---|
|  |  |  | LV:%d, | 
|---|
|  |  |  | RealmLV:%d, | 
|---|
|  |  |  | FightPower:%d, | 
|---|
|  |  |  | Score:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.PlayerID, | 
|---|
|  |  |  | self.PlayerName, | 
|---|
|  |  |  | self.Job, | 
|---|
|  |  |  | self.LV, | 
|---|
|  |  |  | self.RealmLV, | 
|---|
|  |  |  | self.FightPower, | 
|---|
|  |  |  | self.Score | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagGCArenaMatchList(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | MatchCount = 0    #(BYTE MatchCount) | 
|---|
|  |  |  | MatchList = list()    #(vector<tagGCArenaMatchInfo> MatchList)// 匹配列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xA9 | 
|---|
|  |  |  | self.Head.SubCmd = 0x22 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, _lpData, _pos=0, _Len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | _pos = self.Head.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.MatchCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.MatchCount): | 
|---|
|  |  |  | temMatchList = tagGCArenaMatchInfo() | 
|---|
|  |  |  | _pos = temMatchList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.MatchList.append(temMatchList) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xA9 | 
|---|
|  |  |  | self.Head.SubCmd = 0x22 | 
|---|
|  |  |  | self.MatchCount = 0 | 
|---|
|  |  |  | self.MatchList = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.MatchCount): | 
|---|
|  |  |  | length += self.MatchList[i].GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.MatchCount) | 
|---|
|  |  |  | for i in range(self.MatchCount): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.MatchList[i].GetLength(), self.MatchList[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | MatchCount:%d, | 
|---|
|  |  |  | MatchList:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.MatchCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagGCArenaMatchList=tagGCArenaMatchList() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaMatchList.Head.Cmd,m_NAtagGCArenaMatchList.Head.SubCmd))] = m_NAtagGCArenaMatchList | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # A9 09 通知BOSS关注记录 #tagGCBossAttentionInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagGCBossAttention(Structure): | 
|---|
|  |  |  | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("Point", c_int),    # 复活点数 | 
|---|
|  |  |  | ("TotalPoint", c_int),    # 复活总点数 | 
|---|
|  |  |  | ("RebornCnt", c_ushort),    # 复活次数 | 
|---|
|  |  |  | ("RebornCnt", c_ushort),    # 今日已复活次数 | 
|---|
|  |  |  | ("TotalRebornCnt", c_ushort),    # 每日可复活总次数,0为不限制 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | self.Point = 0 | 
|---|
|  |  |  | self.TotalPoint = 0 | 
|---|
|  |  |  | self.RebornCnt = 0 | 
|---|
|  |  |  | self.TotalRebornCnt = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | SubCmd:%s, | 
|---|
|  |  |  | Point:%d, | 
|---|
|  |  |  | TotalPoint:%d, | 
|---|
|  |  |  | RebornCnt:%d | 
|---|
|  |  |  | RebornCnt:%d, | 
|---|
|  |  |  | TotalRebornCnt:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Cmd, | 
|---|
|  |  |  | self.SubCmd, | 
|---|
|  |  |  | self.Point, | 
|---|
|  |  |  | self.TotalPoint, | 
|---|
|  |  |  | self.RebornCnt | 
|---|
|  |  |  | self.RebornCnt, | 
|---|
|  |  |  | self.TotalRebornCnt | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagGCAssistInfo(Structure): | 
|---|
|  |  |  | AssistGUID = ""    #(char AssistGUID[40])//协助GUID | 
|---|
|  |  |  | PlayerID = 0    #(DWORD PlayerID) | 
|---|
|  |  |  | PlayerName = ""    #(char PlayerName[33]) | 
|---|
|  |  |  | Job = 0    #(BYTE Job) | 
|---|
|  |  |  | LV = 0    #(WORD LV)//等级 | 
|---|
|  |  |  | 
|---|
|  |  |  | def ReadData(self, _lpData, _pos=0, _Len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) | 
|---|
|  |  |  | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) | 
|---|
|  |  |  | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.AssistGUID = "" | 
|---|
|  |  |  | self.PlayerID = 0 | 
|---|
|  |  |  | self.PlayerName = "" | 
|---|
|  |  |  | self.Job = 0 | 
|---|
|  |  |  | self.LV = 0 | 
|---|
|  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += 40 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 33 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteString(data, 40, self.AssistGUID) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.PlayerID) | 
|---|
|  |  |  | data = CommFunc.WriteString(data, 33, self.PlayerName) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.Job) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.LV) | 
|---|
|  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | AssistGUID:%s, | 
|---|
|  |  |  | PlayerID:%d, | 
|---|
|  |  |  | PlayerName:%s, | 
|---|
|  |  |  | Job:%d, | 
|---|
|  |  |  | LV:%d, | 
|---|
|  |  |  | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.AssistGUID, | 
|---|
|  |  |  | self.PlayerID, | 
|---|
|  |  |  | self.PlayerName, | 
|---|
|  |  |  | self.Job, | 
|---|
|  |  |  | self.LV, | 
|---|
|  |  |  | 
|---|
|  |  |  | ("EquipPlace", c_ubyte),    #当前要升星的装备位 | 
|---|
|  |  |  | ("CurStar", c_ubyte),    #当前星级 | 
|---|
|  |  |  | ("CurRate", c_ubyte),    #当前自动购买后的总概率,不满100则代表拍品库存不足 | 
|---|
|  |  |  | ("AutoBuyCostMoney", c_ushort),    #自动购买所需总消耗 | 
|---|
|  |  |  | ("AutoBuyCostMoney", c_int),    #自动购买所需总消耗 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # A3 C3 竞技场玩家信息 #tagMCArenaPlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCArenaPlayerInfo(Structure): | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("IsReset", c_ubyte),    #是否是重置的 | 
|---|
|  |  |  | ("Score", c_int),    #当前积分 | 
|---|
|  |  |  | ("BattleCountToday", c_ubyte),    #今日已挑战次数 | 
|---|
|  |  |  | ("MatchRefreshCount", c_ubyte),    #当前已刷新匹配列表次数,每次挑战后会重置 | 
|---|
|  |  |  | ("ItemAddBattleCountToday", c_ubyte),    #今日已使用物品增加的挑战次数 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Cmd = 0xA3 | 
|---|
|  |  |  | self.SubCmd = 0xC3 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, stringData, _pos=0, _len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | memmove(addressof(self), stringData[_pos:], self.GetLength()) | 
|---|
|  |  |  | return _pos + self.GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Cmd = 0xA3 | 
|---|
|  |  |  | self.SubCmd = 0xC3 | 
|---|
|  |  |  | self.IsReset = 0 | 
|---|
|  |  |  | self.Score = 0 | 
|---|
|  |  |  | self.BattleCountToday = 0 | 
|---|
|  |  |  | self.MatchRefreshCount = 0 | 
|---|
|  |  |  | self.ItemAddBattleCountToday = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | return sizeof(tagMCArenaPlayerInfo) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// A3 C3 竞技场玩家信息 //tagMCArenaPlayerInfo: | 
|---|
|  |  |  | Cmd:%s, | 
|---|
|  |  |  | SubCmd:%s, | 
|---|
|  |  |  | IsReset:%d, | 
|---|
|  |  |  | Score:%d, | 
|---|
|  |  |  | BattleCountToday:%d, | 
|---|
|  |  |  | MatchRefreshCount:%d, | 
|---|
|  |  |  | ItemAddBattleCountToday:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Cmd, | 
|---|
|  |  |  | self.SubCmd, | 
|---|
|  |  |  | self.IsReset, | 
|---|
|  |  |  | self.Score, | 
|---|
|  |  |  | self.BattleCountToday, | 
|---|
|  |  |  | self.MatchRefreshCount, | 
|---|
|  |  |  | self.ItemAddBattleCountToday | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCArenaPlayerInfo=tagMCArenaPlayerInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCArenaPlayerInfo.Cmd,m_NAtagMCArenaPlayerInfo.SubCmd))] = m_NAtagMCArenaPlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # A3 0F 通知玩家悬赏任务信息 #tagMCArrestTaskInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCArrestTaskInfo(Structure): | 
|---|
|  |  |  | 
|---|
|  |  |  | StoveLV = 0    #(BYTE StoveLV)// 炼丹炉等级 | 
|---|
|  |  |  | StoveExp = 0    #(DWORD StoveExp)// 炼丹炉经验 | 
|---|
|  |  |  | ItemID = 0    #(DWORD ItemID)// 合成物品id | 
|---|
|  |  |  | ItemCnt = 0    #(BYTE ItemCnt)// 丹药数量 | 
|---|
|  |  |  | ItemCnt = 0    #(WORD ItemCnt)// 丹药数量 | 
|---|
|  |  |  | StoveCnt = 0    #(WORD StoveCnt)// 丹药数量 | 
|---|
|  |  |  | InfoList = list()    #(vector<tagMCPlayerStoveInfo> InfoList) | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  | 
|---|
|  |  |  | self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.ItemCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.StoveCnt): | 
|---|
|  |  |  | temInfoList = tagMCPlayerStoveInfo() | 
|---|
|  |  |  | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | for i in range(self.StoveCnt): | 
|---|
|  |  |  | length += self.InfoList[i].GetLength() | 
|---|
|  |  |  | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.StoveLV) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.StoveExp) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.ItemID) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.ItemCnt) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.ItemCnt) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.StoveCnt) | 
|---|
|  |  |  | for i in range(self.StoveCnt): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) | 
|---|
|  |  |  | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("RecordIndex", c_ushort),    #第几个记录值 每个key存31个succid   0-30为0, 31-61为1.. | 
|---|
|  |  |  | ("Record", c_int),    #对应是否领取值 | 
|---|
|  |  |  | ("PassportRecord", c_int),    #通行证奖励是否领取值 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.RecordIndex = 0 | 
|---|
|  |  |  | self.Record = 0 | 
|---|
|  |  |  | self.PassportRecord = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''//A3 42  成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList: | 
|---|
|  |  |  | RecordIndex:%d, | 
|---|
|  |  |  | Record:%d | 
|---|
|  |  |  | Record:%d, | 
|---|
|  |  |  | PassportRecord:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.RecordIndex, | 
|---|
|  |  |  | self.Record | 
|---|
|  |  |  | self.Record, | 
|---|
|  |  |  | self.PassportRecord | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("LV", c_ubyte),    #等阶 | 
|---|
|  |  |  | ("EatItemCount", c_ushort),    #当前阶已吃丹个数 | 
|---|
|  |  |  | ("EatItemCount", c_int),    #当前阶已吃丹个数 | 
|---|
|  |  |  | ("SkinPlusState", c_int),    #幻化激活状态,按位存储是否激活,幻化编号ID对应位 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCCreateRoleAwardState(Structure): | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("GetState", c_ubyte),    # 是否已领取 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Cmd = 0xA7 | 
|---|
|  |  |  | self.SubCmd = 0x20 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, stringData, _pos=0, _len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | memmove(addressof(self), stringData[_pos:], self.GetLength()) | 
|---|
|  |  |  | return _pos + self.GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Cmd = 0xA7 | 
|---|
|  |  |  | self.SubCmd = 0x20 | 
|---|
|  |  |  | self.GetState = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | return sizeof(tagMCCreateRoleAwardState) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState: | 
|---|
|  |  |  | Cmd:%s, | 
|---|
|  |  |  | SubCmd:%s, | 
|---|
|  |  |  | GetState:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Cmd, | 
|---|
|  |  |  | self.SubCmd, | 
|---|
|  |  |  | self.GetState | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # AA 40 集字活动信息 #tagMCActCollectWordsInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActCollectWordsNeedItem(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(tagMCActCollectWordsNeedItem) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// AA 40 集字活动信息 //tagMCActCollectWordsInfo: | 
|---|
|  |  |  | ItemID:%d, | 
|---|
|  |  |  | ItemCount:%d, | 
|---|
|  |  |  | IsBind:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.ItemID, | 
|---|
|  |  |  | self.ItemCount, | 
|---|
|  |  |  | self.IsBind | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActCollectWordsExchangeItem(Structure): | 
|---|
|  |  |  | ExchangeNum = 0    #(BYTE ExchangeNum)//兑换编号 | 
|---|
|  |  |  | ExchangeCountMax = 0    #(BYTE ExchangeCountMax)//最大兑换次数,0不限制 | 
|---|
|  |  |  | ItemID = 0    #(DWORD ItemID)//目标物品 | 
|---|
|  |  |  | ItemCount = 0    #(WORD ItemCount) | 
|---|
|  |  |  | IsBind = 0    #(BYTE IsBind) | 
|---|
|  |  |  | NeedItemCount = 0    #(BYTE NeedItemCount) | 
|---|
|  |  |  | NeedItemList = list()    #(vector<tagMCActCollectWordsNeedItem> NeedItemList)// 所需物品列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, _lpData, _pos=0, _Len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.ExchangeNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.ExchangeCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.NeedItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.NeedItemCount): | 
|---|
|  |  |  | temNeedItemList = tagMCActCollectWordsNeedItem() | 
|---|
|  |  |  | _pos = temNeedItemList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.NeedItemList.append(temNeedItemList) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.ExchangeNum = 0 | 
|---|
|  |  |  | self.ExchangeCountMax = 0 | 
|---|
|  |  |  | self.ItemID = 0 | 
|---|
|  |  |  | self.ItemCount = 0 | 
|---|
|  |  |  | self.IsBind = 0 | 
|---|
|  |  |  | self.NeedItemCount = 0 | 
|---|
|  |  |  | self.NeedItemList = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.NeedItemCount): | 
|---|
|  |  |  | length += self.NeedItemList[i].GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.ExchangeNum) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.ExchangeCountMax) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.ItemID) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.ItemCount) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.IsBind) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.NeedItemCount) | 
|---|
|  |  |  | for i in range(self.NeedItemCount): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.NeedItemList[i].GetLength(), self.NeedItemList[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | ExchangeNum:%d, | 
|---|
|  |  |  | ExchangeCountMax:%d, | 
|---|
|  |  |  | ItemID:%d, | 
|---|
|  |  |  | ItemCount:%d, | 
|---|
|  |  |  | IsBind:%d, | 
|---|
|  |  |  | NeedItemCount:%d, | 
|---|
|  |  |  | NeedItemList:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.ExchangeNum, | 
|---|
|  |  |  | self.ExchangeCountMax, | 
|---|
|  |  |  | self.ItemID, | 
|---|
|  |  |  | self.ItemCount, | 
|---|
|  |  |  | self.IsBind, | 
|---|
|  |  |  | self.NeedItemCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActCollectWordsInfo(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | ActNum = 0    #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启 | 
|---|
|  |  |  | StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d | 
|---|
|  |  |  | EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d | 
|---|
|  |  |  | LimitLV = 0    #(WORD LimitLV)// 限制等级 | 
|---|
|  |  |  | LastDayOnlyExchange = 0    #(BYTE LastDayOnlyExchange)//最后一天是否仅兑换 | 
|---|
|  |  |  | ExchangeCount = 0    #(BYTE ExchangeCount) | 
|---|
|  |  |  | ExchangeItemList = list()    #(vector<tagMCActCollectWordsExchangeItem> ExchangeItemList)//兑换组合列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x40 | 
|---|
|  |  |  | 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.LastDayOnlyExchange,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.ExchangeCount): | 
|---|
|  |  |  | temExchangeItemList = tagMCActCollectWordsExchangeItem() | 
|---|
|  |  |  | _pos = temExchangeItemList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.ExchangeItemList.append(temExchangeItemList) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x40 | 
|---|
|  |  |  | self.ActNum = 0 | 
|---|
|  |  |  | self.StartDate = "" | 
|---|
|  |  |  | self.EndtDate = "" | 
|---|
|  |  |  | self.LimitLV = 0 | 
|---|
|  |  |  | self.LastDayOnlyExchange = 0 | 
|---|
|  |  |  | self.ExchangeCount = 0 | 
|---|
|  |  |  | self.ExchangeItemList = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 10 | 
|---|
|  |  |  | length += 10 | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.ExchangeCount): | 
|---|
|  |  |  | length += self.ExchangeItemList[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.LastDayOnlyExchange) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.ExchangeCount) | 
|---|
|  |  |  | for i in range(self.ExchangeCount): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.ExchangeItemList[i].GetLength(), self.ExchangeItemList[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | ActNum:%d, | 
|---|
|  |  |  | StartDate:%s, | 
|---|
|  |  |  | EndtDate:%s, | 
|---|
|  |  |  | LimitLV:%d, | 
|---|
|  |  |  | LastDayOnlyExchange:%d, | 
|---|
|  |  |  | ExchangeCount:%d, | 
|---|
|  |  |  | ExchangeItemList:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.ActNum, | 
|---|
|  |  |  | self.StartDate, | 
|---|
|  |  |  | self.EndtDate, | 
|---|
|  |  |  | self.LimitLV, | 
|---|
|  |  |  | self.LastDayOnlyExchange, | 
|---|
|  |  |  | self.ExchangeCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCActCollectWordsInfo=tagMCActCollectWordsInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsInfo.Head.Cmd,m_NAtagMCActCollectWordsInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # AA 41 集字活动玩家信息 #tagMCActCollectWordsPlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActCollectWordsExchangeInfo(Structure): | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("ExchangeNum", c_ubyte),    #兑换编号 | 
|---|
|  |  |  | ("ExchangeCount", 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.ExchangeNum = 0 | 
|---|
|  |  |  | self.ExchangeCount = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | return sizeof(tagMCActCollectWordsExchangeInfo) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// AA 41 集字活动玩家信息 //tagMCActCollectWordsPlayerInfo: | 
|---|
|  |  |  | ExchangeNum:%d, | 
|---|
|  |  |  | ExchangeCount:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.ExchangeNum, | 
|---|
|  |  |  | self.ExchangeCount | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActCollectWordsPlayerInfo(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | ActNum = 0    #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启 | 
|---|
|  |  |  | ExchangeCount = 0    #(BYTE ExchangeCount) | 
|---|
|  |  |  | ExchangeInfoList = list()    #(vector<tagMCActCollectWordsExchangeInfo> ExchangeInfoList)//兑换数据列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x41 | 
|---|
|  |  |  | 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.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.ExchangeCount): | 
|---|
|  |  |  | temExchangeInfoList = tagMCActCollectWordsExchangeInfo() | 
|---|
|  |  |  | _pos = temExchangeInfoList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.ExchangeInfoList.append(temExchangeInfoList) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x41 | 
|---|
|  |  |  | self.ActNum = 0 | 
|---|
|  |  |  | self.ExchangeCount = 0 | 
|---|
|  |  |  | self.ExchangeInfoList = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.ExchangeCount): | 
|---|
|  |  |  | length += self.ExchangeInfoList[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.ExchangeCount) | 
|---|
|  |  |  | for i in range(self.ExchangeCount): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.ExchangeInfoList[i].GetLength(), self.ExchangeInfoList[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | ActNum:%d, | 
|---|
|  |  |  | ExchangeCount:%d, | 
|---|
|  |  |  | ExchangeInfoList:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.ActNum, | 
|---|
|  |  |  | self.ExchangeCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCActCollectWordsPlayerInfo=tagMCActCollectWordsPlayerInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsPlayerInfo.Head.Cmd,m_NAtagMCActCollectWordsPlayerInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsPlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActLoginAwardAction(Structure): | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActRechargePrize(Structure): | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("CTGID", c_ushort),    # 对应充值表充值ID | 
|---|
|  |  |  | ("GoldPrize", c_int),    #返利仙玉数 | 
|---|
|  |  |  | ("PrizeCountLimit", 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.CTGID = 0 | 
|---|
|  |  |  | self.GoldPrize = 0 | 
|---|
|  |  |  | self.PrizeCountLimit = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | return sizeof(tagMCActRechargePrize) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo: | 
|---|
|  |  |  | CTGID:%d, | 
|---|
|  |  |  | GoldPrize:%d, | 
|---|
|  |  |  | PrizeCountLimit:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.CTGID, | 
|---|
|  |  |  | self.GoldPrize, | 
|---|
|  |  |  | self.PrizeCountLimit | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActRechargePrizeDay(Structure): | 
|---|
|  |  |  | Prizes = 0    #(BYTE Prizes)// 返利档数 | 
|---|
|  |  |  | PrizeInfo = list()    #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, _lpData, _pos=0, _Len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.Prizes): | 
|---|
|  |  |  | temPrizeInfo = tagMCActRechargePrize() | 
|---|
|  |  |  | _pos = temPrizeInfo.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.PrizeInfo.append(temPrizeInfo) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Prizes = 0 | 
|---|
|  |  |  | self.PrizeInfo = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.Prizes): | 
|---|
|  |  |  | length += self.PrizeInfo[i].GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.Prizes) | 
|---|
|  |  |  | for i in range(self.Prizes): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Prizes:%d, | 
|---|
|  |  |  | PrizeInfo:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Prizes, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCActRechargePrizeInfo(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d | 
|---|
|  |  |  | EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d | 
|---|
|  |  |  | IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置 | 
|---|
|  |  |  | PrizeDays = 0    #(BYTE PrizeDays) | 
|---|
|  |  |  | PrizeDayInfo = list()    #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x27 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, _lpData, _pos=0, _Len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | _pos = self.Head.ReadData(_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.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.PrizeDays): | 
|---|
|  |  |  | temPrizeDayInfo = tagMCActRechargePrizeDay() | 
|---|
|  |  |  | _pos = temPrizeDayInfo.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.PrizeDayInfo.append(temPrizeDayInfo) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x27 | 
|---|
|  |  |  | self.StartDate = "" | 
|---|
|  |  |  | self.EndtDate = "" | 
|---|
|  |  |  | self.IsDayReset = 0 | 
|---|
|  |  |  | self.PrizeDays = 0 | 
|---|
|  |  |  | self.PrizeDayInfo = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 10 | 
|---|
|  |  |  | length += 10 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.PrizeDays): | 
|---|
|  |  |  | length += self.PrizeDayInfo[i].GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) | 
|---|
|  |  |  | 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.PrizeDays) | 
|---|
|  |  |  | for i in range(self.PrizeDays): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | StartDate:%s, | 
|---|
|  |  |  | EndtDate:%s, | 
|---|
|  |  |  | IsDayReset:%d, | 
|---|
|  |  |  | PrizeDays:%d, | 
|---|
|  |  |  | PrizeDayInfo:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.StartDate, | 
|---|
|  |  |  | self.EndtDate, | 
|---|
|  |  |  | self.IsDayReset, | 
|---|
|  |  |  | self.PrizeDays, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("ItemID", c_int), | 
|---|
|  |  |  | ("ItemCount", c_ushort), | 
|---|
|  |  |  | ("ItemCount", c_int), | 
|---|
|  |  |  | ("IsBind", c_ubyte), | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCDailyGiftbagItem(Structure): | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("ItemID", c_int), | 
|---|
|  |  |  | ("ItemCount", 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.ItemCount = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | return sizeof(tagMCDailyGiftbagItem) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// AA 25 每日礼包活动信息 //tagMCDailyGiftbagInfo: | 
|---|
|  |  |  | ItemID:%d, | 
|---|
|  |  |  | ItemCount:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.ItemID, | 
|---|
|  |  |  | self.ItemCount | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCDailyGiftbag(Structure): | 
|---|
|  |  |  | GiftID = 0    #(DWORD GiftID)//礼包ID,0为免费 | 
|---|
|  |  |  | OrderInfoLen = 0    #(BYTE OrderInfoLen) | 
|---|
|  |  |  | OrderInfo = ""    #(String OrderInfo)//商品编号 | 
|---|
|  |  |  | BuyCountLimit = 0    #(BYTE BuyCountLimit)//限购数 | 
|---|
|  |  |  | RMB = 0    #(DWORD RMB)//所需RMB,元 | 
|---|
|  |  |  | GiftItemCount = 0    #(BYTE GiftItemCount)// 礼包物品数 | 
|---|
|  |  |  | ItemInfo = list()    #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, _lpData, _pos=0, _Len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen) | 
|---|
|  |  |  | self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.GiftItemCount): | 
|---|
|  |  |  | temItemInfo = tagMCDailyGiftbagItem() | 
|---|
|  |  |  | _pos = temItemInfo.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.ItemInfo.append(temItemInfo) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.GiftID = 0 | 
|---|
|  |  |  | self.OrderInfoLen = 0 | 
|---|
|  |  |  | self.OrderInfo = "" | 
|---|
|  |  |  | self.BuyCountLimit = 0 | 
|---|
|  |  |  | self.RMB = 0 | 
|---|
|  |  |  | self.GiftItemCount = 0 | 
|---|
|  |  |  | self.ItemInfo = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += len(self.OrderInfo) | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.GiftItemCount): | 
|---|
|  |  |  | length += self.ItemInfo[i].GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.GiftID) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.OrderInfoLen) | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.BuyCountLimit) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.RMB) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.GiftItemCount) | 
|---|
|  |  |  | for i in range(self.GiftItemCount): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | GiftID:%d, | 
|---|
|  |  |  | OrderInfoLen:%d, | 
|---|
|  |  |  | OrderInfo:%s, | 
|---|
|  |  |  | BuyCountLimit:%d, | 
|---|
|  |  |  | RMB:%d, | 
|---|
|  |  |  | GiftItemCount:%d, | 
|---|
|  |  |  | ItemInfo:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.GiftID, | 
|---|
|  |  |  | self.OrderInfoLen, | 
|---|
|  |  |  | self.OrderInfo, | 
|---|
|  |  |  | self.BuyCountLimit, | 
|---|
|  |  |  | self.RMB, | 
|---|
|  |  |  | self.GiftItemCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCDailyGiftbagInfo(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | GiftbagCount = 0    #(BYTE GiftbagCount)// 礼包数 | 
|---|
|  |  |  | GiftbagInfo = list()    #(vector<tagMCDailyGiftbag> GiftbagInfo)// 礼包信息 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x25 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ReadData(self, _lpData, _pos=0, _Len=0): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | _pos = self.Head.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | for i in range(self.GiftbagCount): | 
|---|
|  |  |  | temGiftbagInfo = tagMCDailyGiftbag() | 
|---|
|  |  |  | _pos = temGiftbagInfo.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.GiftbagInfo.append(temGiftbagInfo) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x25 | 
|---|
|  |  |  | self.GiftbagCount = 0 | 
|---|
|  |  |  | self.GiftbagInfo = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.GiftbagCount): | 
|---|
|  |  |  | length += self.GiftbagInfo[i].GetLength() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | data = '' | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.GiftbagCount) | 
|---|
|  |  |  | for i in range(self.GiftbagCount): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | GiftbagCount:%d, | 
|---|
|  |  |  | GiftbagInfo:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.GiftbagCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCDailyGiftbagInfo=tagMCDailyGiftbagInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagInfo.Head.Cmd,m_NAtagMCDailyGiftbagInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # AA 26 每日礼包玩家活动信息 #tagMCDailyGiftbagPlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCDailyGiftbagBuyCount(Structure): | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("GiftbagID", c_int),    #礼包ID | 
|---|
|  |  |  | ("BuyCount", 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.GiftbagID = 0 | 
|---|
|  |  |  | self.BuyCount = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | return sizeof(tagMCDailyGiftbagBuyCount) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// AA 26 每日礼包玩家活动信息 //tagMCDailyGiftbagPlayerInfo: | 
|---|
|  |  |  | GiftbagID:%d, | 
|---|
|  |  |  | BuyCount:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.GiftbagID, | 
|---|
|  |  |  | self.BuyCount | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCDailyGiftbagPlayerInfo(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | Count = 0    #(BYTE Count) | 
|---|
|  |  |  | BuyCountList = list()    #(vector<tagMCDailyGiftbagBuyCount> BuyCountList)//礼包购买次数信息 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x26 | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | temBuyCountList = tagMCDailyGiftbagBuyCount() | 
|---|
|  |  |  | _pos = temBuyCountList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.BuyCountList.append(temBuyCountList) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x26 | 
|---|
|  |  |  | self.Count = 0 | 
|---|
|  |  |  | self.BuyCountList = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.Count): | 
|---|
|  |  |  | length += self.BuyCountList[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.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | Count:%d, | 
|---|
|  |  |  | BuyCountList:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.Count, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCDailyGiftbagPlayerInfo=tagMCDailyGiftbagPlayerInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagPlayerInfo.Head.Cmd,m_NAtagMCDailyGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagPlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCRechargePrizeInfo(Structure): | 
|---|
|  |  |  | _pack_ = 1 | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("CTGID", c_ushort),    # 对应充值表充值ID | 
|---|
|  |  |  | ("PrizeCount", 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.CTGID = 0 | 
|---|
|  |  |  | self.PrizeCount = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | return sizeof(tagMCRechargePrizeInfo) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetBuffer(self): | 
|---|
|  |  |  | return string_at(addressof(self), self.GetLength()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo: | 
|---|
|  |  |  | CTGID:%d, | 
|---|
|  |  |  | PrizeCount:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.CTGID, | 
|---|
|  |  |  | self.PrizeCount | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagMCRechargePrizePlayerInfo(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | Count = 0    #(BYTE Count) | 
|---|
|  |  |  | PlayerInfoList = list()    #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | self.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x28 | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | temPlayerInfoList = tagMCRechargePrizeInfo() | 
|---|
|  |  |  | _pos = temPlayerInfoList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.PlayerInfoList.append(temPlayerInfoList) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | self.Head = tagHead() | 
|---|
|  |  |  | self.Head.Clear() | 
|---|
|  |  |  | self.Head.Cmd = 0xAA | 
|---|
|  |  |  | self.Head.SubCmd = 0x28 | 
|---|
|  |  |  | self.Count = 0 | 
|---|
|  |  |  | self.PlayerInfoList = list() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | length = 0 | 
|---|
|  |  |  | length += self.Head.GetLength() | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | for i in range(self.Count): | 
|---|
|  |  |  | length += self.PlayerInfoList[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.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer()) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | DumpString = ''' | 
|---|
|  |  |  | Head:%s, | 
|---|
|  |  |  | Count:%d, | 
|---|
|  |  |  | PlayerInfoList:%s | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | self.Count, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo() | 
|---|
|  |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | 
|---|
|  |  |  | RewardCount = 0    #(BYTE RewardCount)// 累计未领取探索奖励次数 | 
|---|
|  |  |  | RewardLen = 0    #(BYTE RewardLen) | 
|---|
|  |  |  | RewardInfo = ""    #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...] | 
|---|
|  |  |  | TodayExp = 0    #(DWORD TodayExp) | 
|---|
|  |  |  | TodayExpPoint = 0    #(DWORD TodayExpPoint) | 
|---|
|  |  |  | YestordayExp = 0    #(DWORD YestordayExp) | 
|---|
|  |  |  | YestordayExpPoint = 0    #(DWORD YestordayExpPoint) | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) | 
|---|
|  |  |  | self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen) | 
|---|
|  |  |  | self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | self.RewardCount = 0 | 
|---|
|  |  |  | self.RewardLen = 0 | 
|---|
|  |  |  | self.RewardInfo = "" | 
|---|
|  |  |  | self.TodayExp = 0 | 
|---|
|  |  |  | self.TodayExpPoint = 0 | 
|---|
|  |  |  | self.YestordayExp = 0 | 
|---|
|  |  |  | self.YestordayExpPoint = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += 1 | 
|---|
|  |  |  | length += len(self.RewardInfo) | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  | length += 4 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.RewardCount) | 
|---|
|  |  |  | data = CommFunc.WriteBYTE(data, self.RewardLen) | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.TodayExp) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.TodayExpPoint) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.YestordayExp) | 
|---|
|  |  |  | data = CommFunc.WriteDWORD(data, self.YestordayExpPoint) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | PlaceCount:%d, | 
|---|
|  |  |  | RewardCount:%d, | 
|---|
|  |  |  | RewardLen:%d, | 
|---|
|  |  |  | RewardInfo:%s | 
|---|
|  |  |  | RewardInfo:%s, | 
|---|
|  |  |  | TodayExp:%d, | 
|---|
|  |  |  | TodayExpPoint:%d, | 
|---|
|  |  |  | YestordayExp:%d, | 
|---|
|  |  |  | YestordayExpPoint:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | 
|---|
|  |  |  | self.PlaceCount, | 
|---|
|  |  |  | self.RewardCount, | 
|---|
|  |  |  | self.RewardLen, | 
|---|
|  |  |  | self.RewardInfo | 
|---|
|  |  |  | self.RewardInfo, | 
|---|
|  |  |  | self.TodayExp, | 
|---|
|  |  |  | self.TodayExpPoint, | 
|---|
|  |  |  | self.YestordayExp, | 
|---|
|  |  |  | self.YestordayExpPoint | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("Floor", c_int),    # 已通关层 | 
|---|
|  |  |  | ("ServerRewardRecord", c_int),    #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | self.Cmd = 0xB2 | 
|---|
|  |  |  | self.SubCmd = 0x13 | 
|---|
|  |  |  | self.Floor = 0 | 
|---|
|  |  |  | self.ServerRewardRecord = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo: | 
|---|
|  |  |  | Cmd:%s, | 
|---|
|  |  |  | SubCmd:%s, | 
|---|
|  |  |  | Floor:%d | 
|---|
|  |  |  | Floor:%d, | 
|---|
|  |  |  | ServerRewardRecord:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Cmd, | 
|---|
|  |  |  | self.SubCmd, | 
|---|
|  |  |  | self.Floor | 
|---|
|  |  |  | self.Floor, | 
|---|
|  |  |  | self.ServerRewardRecord | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | PosY = 0    #(WORD PosY) | 
|---|
|  |  |  | HurtCount = 0    #(WORD HurtCount)//伤害数目 | 
|---|
|  |  |  | HurtList = list()    #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount | 
|---|
|  |  |  | SkillElementID = 0    #(WORD SkillElementID)//专精技能ID | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | temHurtList = tagSkillPosHurtObj() | 
|---|
|  |  |  | _pos = temHurtList.ReadData(_lpData, _pos) | 
|---|
|  |  |  | self.HurtList.append(temHurtList) | 
|---|
|  |  |  | self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos) | 
|---|
|  |  |  | return _pos | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Clear(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | self.PosY = 0 | 
|---|
|  |  |  | self.HurtCount = 0 | 
|---|
|  |  |  | self.HurtList = list() | 
|---|
|  |  |  | self.SkillElementID = 0 | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLength(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  | for i in range(self.HurtCount): | 
|---|
|  |  |  | length += self.HurtList[i].GetLength() | 
|---|
|  |  |  | length += 2 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return length | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.HurtCount) | 
|---|
|  |  |  | for i in range(self.HurtCount): | 
|---|
|  |  |  | data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer()) | 
|---|
|  |  |  | data = CommFunc.WriteWORD(data, self.SkillElementID) | 
|---|
|  |  |  | return data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OutputString(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | PosX:%d, | 
|---|
|  |  |  | PosY:%d, | 
|---|
|  |  |  | HurtCount:%d, | 
|---|
|  |  |  | HurtList:%s | 
|---|
|  |  |  | HurtList:%s, | 
|---|
|  |  |  | SkillElementID:%d | 
|---|
|  |  |  | '''\ | 
|---|
|  |  |  | %( | 
|---|
|  |  |  | self.Head.OutputString(), | 
|---|
|  |  |  | 
|---|
|  |  |  | self.PosX, | 
|---|
|  |  |  | self.PosY, | 
|---|
|  |  |  | self.HurtCount, | 
|---|
|  |  |  | "..." | 
|---|
|  |  |  | "...", | 
|---|
|  |  |  | self.SkillElementID | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return DumpString | 
|---|
|  |  |  |  | 
|---|