| | |
| | | RealmLV = 0 #(WORD RealmLV)//境界
|
| | | OnlineType = 0 #(BYTE OnlineType)//在线状态, 0 不在线 1在线
|
| | | IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍
|
| | | ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.RealmLV = 0
|
| | | self.OnlineType = 0
|
| | | self.IsInTeam = 0
|
| | | self.ServerGroupID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteWORD(data, self.RealmLV)
|
| | | data = CommFunc.WriteBYTE(data, self.OnlineType)
|
| | | data = CommFunc.WriteBYTE(data, self.IsInTeam)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerGroupID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | OnlineType:%d,
|
| | | IsInTeam:%d
|
| | | IsInTeam:%d,
|
| | | ServerGroupID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.OnlineType,
|
| | | self.IsInTeam
|
| | | self.IsInTeam,
|
| | | self.ServerGroupID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ItemData = "" #(String ItemData)//物品记录
|
| | | PlusDataSize = 0 #(DWORD PlusDataSize)
|
| | | PlusData = "" #(String PlusData)//扩展记录
|
| | | CrossPlayer = 0 #(BYTE CrossPlayer)//是否跨服玩家
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
|
| | | self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
|
| | | self.CrossPlayer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.ItemData = ""
|
| | | self.PlusDataSize = 0
|
| | | self.PlusData = ""
|
| | | self.CrossPlayer = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += len(self.ItemData)
|
| | | length += 4
|
| | | length += len(self.PlusData)
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
|
| | | data = CommFunc.WriteDWORD(data, self.PlusDataSize)
|
| | | data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
|
| | | data = CommFunc.WriteBYTE(data, self.CrossPlayer)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ItemDataSize:%d,
|
| | | ItemData:%s,
|
| | | PlusDataSize:%d,
|
| | | PlusData:%s,
|
| | | CrossPlayer:%d
|
| | | PlusData:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.ItemDataSize,
|
| | | self.ItemData,
|
| | | self.PlusDataSize,
|
| | | self.PlusData,
|
| | | self.CrossPlayer
|
| | | self.PlusData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | class tagMCWeekPartyAction(Structure):
|
| | | TemplateID = 0 #(DWORD TemplateID)// 模板ID
|
| | | ActionType = 0 #(WORD ActionType)// 活动类别
|
| | | TotalTimes = 0 #(BYTE TotalTimes)// 可完成的总次数,0表示不限次数
|
| | | TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
|
| | | SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
|
| | | Point = 0 #(DWORD Point)// 单次领奖积分
|
| | | Count = 0 #(BYTE Count)// 物品数
|
| | |
| | | self.Clear()
|
| | | self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.TemplateID)
|
| | | data = CommFunc.WriteWORD(data, self.ActionType)
|
| | | data = CommFunc.WriteBYTE(data, self.TotalTimes)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalTimes)
|
| | | data = CommFunc.WriteDWORD(data, self.SingleTimes)
|
| | | data = CommFunc.WriteDWORD(data, self.Point)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | |
| | | self.Head.SubCmd = 0x0A
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | |
| | | 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.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | |
| | | class tagMCWeekPartyTaskInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ActionType", c_ushort), # 活动类别
|
| | | ("TemplateID", c_ushort), # 模板ID
|
| | | ("CurTimes", c_ushort), #已完成次数
|
| | | ("GotTimes", c_ushort), #已领取次数
|
| | | ]
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ActionType = 0
|
| | | self.TemplateID = 0
|
| | | self.CurTimes = 0
|
| | | self.GotTimes = 0
|
| | | return
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
|
| | | ActionType:%d,
|
| | | TemplateID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActionType,
|
| | | self.TemplateID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | |
| | | class tagMCWeekPartyPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | DayInfoList = list() #(vector<tagMCWeekPartyDayInfo> DayInfoList)//活动完成次数信息
|
| | | DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temDayInfoList = tagMCWeekPartyDayInfo()
|
| | | temDayInfoList = tagMCWeekPartyDayPlayerInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | return _pos
|
| | |
| | | class tagMCClothesCoatLVInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CoatIndex", c_int), #时装索引
|
| | | ("CoatLV", c_ubyte), #时装等级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x02
|
| | | self.CoatIndex = 0
|
| | | self.CoatLV = 0
|
| | | return
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 02 玩家时装皮肤激活状态 //tagMCClothesCoatSkinState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CoatIndex:%d,
|
| | | CoatLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CoatIndex,
|
| | | self.CoatLV
|
| | | )
|
| | |
| | | ("DayPKCount", c_ubyte), # 当日已PK次数
|
| | | ("DayWinCount", c_ubyte), # 当日已胜利次数
|
| | | ("DayBuyCount", c_ubyte), # 当日已购买次数
|
| | | ("DayItemAddCount", c_ubyte), # 当日物品增加次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.DayPKCount = 0
|
| | | self.DayWinCount = 0
|
| | | self.DayBuyCount = 0
|
| | | self.DayItemAddCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | CWinCount:%d,
|
| | | DayPKCount:%d,
|
| | | DayWinCount:%d,
|
| | | DayBuyCount:%d
|
| | | DayBuyCount:%d,
|
| | | DayItemAddCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | |
| | | self.CWinCount,
|
| | | self.DayPKCount,
|
| | | self.DayWinCount,
|
| | | self.DayBuyCount
|
| | | self.DayBuyCount,
|
| | | self.DayItemAddCount
|
| | | )
|
| | | return DumpString
|
| | |
|