From c2ea18fd93c7b954f36a9b578c55a6065af2f863 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期五, 28 九月 2018 14:01:42 +0800 Subject: [PATCH] 3623 子 任务修改 / 【后端】新增任务接口 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 1,071 insertions(+), 61 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 2d78d0d..e0a7560 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -318,6 +318,14 @@ ("Day", c_ushort), # 已开服天数,从0开始 ("IsMixServer", c_ubyte), #是否是合服服务器 ("MixDay", c_ushort), # 已合服天数,从0开始 + ("OpenWeekday", c_ubyte), #开服是周几,1代表周一 + ("NowYear", c_ushort), #服务器当前时间 - 年 + ("NowMonth", c_ubyte), + ("NowDay", c_ubyte), + ("NowHour", c_ubyte), + ("NowMinute", c_ubyte), + ("NowSecond", c_ubyte), + ("NowMicSecond", c_int), ] def __init__(self): @@ -337,6 +345,14 @@ self.Day = 0 self.IsMixServer = 0 self.MixDay = 0 + self.OpenWeekday = 0 + self.NowYear = 0 + self.NowMonth = 0 + self.NowDay = 0 + self.NowHour = 0 + self.NowMinute = 0 + self.NowSecond = 0 + self.NowMicSecond = 0 return def GetLength(self): @@ -351,14 +367,30 @@ SubCmd:%s, Day:%d, IsMixServer:%d, - MixDay:%d + MixDay:%d, + OpenWeekday:%d, + NowYear:%d, + NowMonth:%d, + NowDay:%d, + NowHour:%d, + NowMinute:%d, + NowSecond:%d, + NowMicSecond:%d '''\ %( self.Cmd, self.SubCmd, self.Day, self.IsMixServer, - self.MixDay + self.MixDay, + self.OpenWeekday, + self.NowYear, + self.NowMonth, + self.NowDay, + self.NowHour, + self.NowMinute, + self.NowSecond, + self.NowMicSecond ) return DumpString @@ -2285,8 +2317,9 @@ class tagGCBossShuntLineState(Structure): BossID = 0 #(DWORD BossID)// bossID - DeadLineCount = 0 #(BYTE DeadLineCount) - DeadLineList = list() #(vector<BYTE> DeadLineList)// 已死亡的线路列表 + LineCount = 0 #(BYTE LineCount) + LineIDList = list() #(vector<BYTE> LineIDList)// 线路ID列表 + StateList = list() #(vector<BYTE> StateList)// 对应状态列表, 0-被击杀,1-活着 data = None def __init__(self): @@ -2296,43 +2329,52 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() self.BossID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.DeadLineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.DeadLineCount): + self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.LineCount): value,_pos=CommFunc.ReadBYTE(_lpData,_pos) - self.DeadLineList.append(value) + self.LineIDList.append(value) + for i in range(self.LineCount): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.StateList.append(value) return _pos def Clear(self): self.BossID = 0 - self.DeadLineCount = 0 - self.DeadLineList = list() + self.LineCount = 0 + self.LineIDList = list() + self.StateList = list() return def GetLength(self): length = 0 length += 4 length += 1 - length += 1 * self.DeadLineCount + length += 1 * self.LineCount + length += 1 * self.LineCount return length def GetBuffer(self): data = '' data = CommFunc.WriteDWORD(data, self.BossID) - data = CommFunc.WriteBYTE(data, self.DeadLineCount) - for i in range(self.DeadLineCount): - data = CommFunc.WriteBYTE(data, self.DeadLineList[i]) + data = CommFunc.WriteBYTE(data, self.LineCount) + for i in range(self.LineCount): + data = CommFunc.WriteBYTE(data, self.LineIDList[i]) + for i in range(self.LineCount): + data = CommFunc.WriteBYTE(data, self.StateList[i]) return data def OutputString(self): DumpString = ''' BossID:%d, - DeadLineCount:%d, - DeadLineList:%s + LineCount:%d, + LineIDList:%s, + StateList:%s '''\ %( self.BossID, - self.DeadLineCount, + self.LineCount, + "...", "..." ) return DumpString @@ -2667,6 +2709,114 @@ #------------------------------------------------------ +# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime + +class tagDogzTimeInfoObj(Structure): + _pack_ = 1 + _fields_ = [ + ("NPCID", c_int), # npcid + ("RefreshSecond", 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.NPCID = 0 + self.RefreshSecond = 0 + return + + def GetLength(self): + return sizeof(tagDogzTimeInfoObj) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime: + NPCID:%d, + RefreshSecond:%d + '''\ + %( + self.NPCID, + self.RefreshSecond + ) + return DumpString + + +class tagGCDogzNPCRefreshTime(Structure): + Head = tagHead() + Cnt = 0 #(BYTE Cnt)//信息个数 + InfoList = list() #(vector<tagDogzTimeInfoObj> InfoList)//信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x04 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Cnt): + temInfoList = tagDogzTimeInfoObj() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x04 + self.Cnt = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Cnt): + 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.Cnt) + for i in range(self.Cnt): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Cnt:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Cnt, + "..." + ) + return DumpString + + +m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime + + +#------------------------------------------------------ # A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo class tagGCFriendSendEnergyInfo(Structure): @@ -2760,6 +2910,7 @@ RecordLen = 0 #(WORD RecordLen)// 长度 KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒 + RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒 data = None def __init__(self): @@ -2773,6 +2924,7 @@ self.RecordLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.KillRecord,_pos = CommFunc.ReadString(_lpData, _pos,self.RecordLen) self.RefreshSecond,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RefreshCD,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -2781,6 +2933,7 @@ self.RecordLen = 0 self.KillRecord = "" self.RefreshSecond = 0 + self.RefreshCD = 0 return def GetLength(self): @@ -2789,6 +2942,7 @@ length += 1 length += 2 length += len(self.KillRecord) + length += 4 length += 4 return length @@ -2800,6 +2954,7 @@ data = CommFunc.WriteWORD(data, self.RecordLen) data = CommFunc.WriteString(data, self.RecordLen, self.KillRecord) data = CommFunc.WriteDWORD(data, self.RefreshSecond) + data = CommFunc.WriteDWORD(data, self.RefreshCD) return data def OutputString(self): @@ -2808,14 +2963,16 @@ IsAlive:%d, RecordLen:%d, KillRecord:%s, - RefreshSecond:%d + RefreshSecond:%d, + RefreshCD:%d '''\ %( self.BossID, self.IsAlive, self.RecordLen, self.KillRecord, - self.RefreshSecond + self.RefreshSecond, + self.RefreshCD ) return DumpString @@ -4129,6 +4286,162 @@ #------------------------------------------------------ +# AC 10 仙盟抢Boss所有Boss伤血进度信息 #tagGCAllFamilyBossHurtInfoList + +class tagGCFamilyBossHurtInfo(Structure): + NPCID = 0 #(DWORD NPCID) + CurHP = 0 #(DWORD CurHP) + CurHPEx = 0 #(DWORD CurHPEx) + MaxHP = 0 #(DWORD MaxHP) + MaxHPEx = 0 #(DWORD MaxHPEx) + FamilyID = 0 #(DWORD FamilyID)// 最大实时伤血仙盟 + NameLen = 0 #(BYTE NameLen) + FamilyName = "" #(String FamilyName) + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + return _pos + + def Clear(self): + self.NPCID = 0 + self.CurHP = 0 + self.CurHPEx = 0 + self.MaxHP = 0 + self.MaxHPEx = 0 + self.FamilyID = 0 + self.NameLen = 0 + self.FamilyName = "" + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 1 + length += len(self.FamilyName) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.NPCID) + data = CommFunc.WriteDWORD(data, self.CurHP) + data = CommFunc.WriteDWORD(data, self.CurHPEx) + data = CommFunc.WriteDWORD(data, self.MaxHP) + data = CommFunc.WriteDWORD(data, self.MaxHPEx) + data = CommFunc.WriteDWORD(data, self.FamilyID) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.FamilyName) + return data + + def OutputString(self): + DumpString = ''' + NPCID:%d, + CurHP:%d, + CurHPEx:%d, + MaxHP:%d, + MaxHPEx:%d, + FamilyID:%d, + NameLen:%d, + FamilyName:%s + '''\ + %( + self.NPCID, + self.CurHP, + self.CurHPEx, + self.MaxHP, + self.MaxHPEx, + self.FamilyID, + self.NameLen, + self.FamilyName + ) + return DumpString + + +class tagGCAllFamilyBossHurtInfoList(Structure): + Head = tagHead() + NPCCount = 0 #(BYTE NPCCount)// 个数 + NPCHurtInfo = list() #(vector<tagGCFamilyBossHurtInfo> NPCHurtInfo)// NPC伤血信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAC + self.Head.SubCmd = 0x10 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.NPCCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NPCCount): + temNPCHurtInfo = tagGCFamilyBossHurtInfo() + _pos = temNPCHurtInfo.ReadData(_lpData, _pos) + self.NPCHurtInfo.append(temNPCHurtInfo) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAC + self.Head.SubCmd = 0x10 + self.NPCCount = 0 + self.NPCHurtInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.NPCCount): + length += self.NPCHurtInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.NPCCount) + for i in range(self.NPCCount): + data = CommFunc.WriteString(data, self.NPCHurtInfo[i].GetLength(), self.NPCHurtInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + NPCCount:%d, + NPCHurtInfo:%s + '''\ + %( + self.Head.OutputString(), + self.NPCCount, + "..." + ) + return DumpString + + +m_NAtagGCAllFamilyBossHurtInfoList=tagGCAllFamilyBossHurtInfoList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAllFamilyBossHurtInfoList.Head.Cmd,m_NAtagGCAllFamilyBossHurtInfoList.Head.SubCmd))] = m_NAtagGCAllFamilyBossHurtInfoList + + +#------------------------------------------------------ # AC 08 boss复活点数通知 #tagGCBossRebornPoint class tagGCBossRebornPoint(Structure): @@ -4138,6 +4451,7 @@ ("SubCmd", c_ubyte), ("Point", c_int), # 复活点数 ("TotalPoint", c_int), # 复活总点数 + ("RebornCnt", c_ushort), # 复活次数 ] def __init__(self): @@ -4156,6 +4470,7 @@ self.SubCmd = 0x08 self.Point = 0 self.TotalPoint = 0 + self.RebornCnt = 0 return def GetLength(self): @@ -4169,13 +4484,15 @@ Cmd:%s, SubCmd:%s, Point:%d, - TotalPoint:%d + TotalPoint:%d, + RebornCnt:%d '''\ %( self.Cmd, self.SubCmd, self.Point, - self.TotalPoint + self.TotalPoint, + self.RebornCnt ) return DumpString @@ -9952,6 +10269,62 @@ #------------------------------------------------------ +# A3 24 通知绑玉转盘结果 #tagMCBindJadeWheelResult + +class tagMCBindJadeWheelResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Index", c_ubyte), # 格子 + ("Cnt", c_ubyte), #今日已转次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x24 + 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 = 0x24 + self.Index = 0 + self.Cnt = 0 + return + + def GetLength(self): + return sizeof(tagMCBindJadeWheelResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 24 通知绑玉转盘结果 //tagMCBindJadeWheelResult: + Cmd:%s, + SubCmd:%s, + Index:%d, + Cnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Index, + self.Cnt + ) + return DumpString + + +m_NAtagMCBindJadeWheelResult=tagMCBindJadeWheelResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBindJadeWheelResult.Cmd,m_NAtagMCBindJadeWheelResult.SubCmd))] = m_NAtagMCBindJadeWheelResult + + +#------------------------------------------------------ #A3 B7 当日累计攻击boss次数 #tagMCBOSSAttactCnt class tagMCBossCntInfo(Structure): @@ -10662,6 +11035,114 @@ #------------------------------------------------------ +# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState + +class tagMCDogzHelpbattleState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DogzID", c_ubyte), # 神兽ID + ("BatteState", c_ubyte), #是否已助战, 0否1是 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0xC1 + 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 = 0xC1 + self.DogzID = 0 + self.BatteState = 0 + return + + def GetLength(self): + return sizeof(tagMCDogzHelpbattleState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState: + Cmd:%s, + SubCmd:%s, + DogzID:%d, + BatteState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DogzID, + self.BatteState + ) + return DumpString + + +m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState + + +#------------------------------------------------------ +# A3 C0 神兽信息 #tagMCDogzInfo + +class tagMCDogzInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BuyHelpbattleCount", c_ubyte), #额外购买的助战数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0xC0 + 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 = 0xC0 + self.BuyHelpbattleCount = 0 + return + + def GetLength(self): + return sizeof(tagMCDogzInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo: + Cmd:%s, + SubCmd:%s, + BuyHelpbattleCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BuyHelpbattleCount + ) + return DumpString + + +m_NAtagMCDogzInfo=tagMCDogzInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo + + +#------------------------------------------------------ # A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo class tagMCEquipDecomposeInfo(Structure): @@ -11164,19 +11645,15 @@ #------------------------------------------------------ #A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo -class tagMCFBEncourageInfo(Structure): +class tagMCFBEncourageCnt(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Cnt1", c_ubyte), # 当前铜钱鼓舞次数 - ("Cnt2", c_ubyte), # 当前仙玉鼓舞次数 + ("MoneyType", c_ubyte), # 金钱类型 + ("EncourageCnt", c_ubyte), # 当前鼓舞次数 ] def __init__(self): self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x0A return def ReadData(self, stringData, _pos=0, _len=0): @@ -11185,36 +11662,92 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x0A - self.Cnt1 = 0 - self.Cnt2 = 0 + self.MoneyType = 0 + self.EncourageCnt = 0 return def GetLength(self): - return sizeof(tagMCFBEncourageInfo) + return sizeof(tagMCFBEncourageCnt) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): DumpString = '''//A3 0A 副本鼓舞信息通知 //tagMCFBEncourageInfo: - Cmd:%s, - SubCmd:%s, - Cnt1:%d, - Cnt2:%d + MoneyType:%d, + EncourageCnt:%d '''\ %( - self.Cmd, - self.SubCmd, - self.Cnt1, - self.Cnt2 + self.MoneyType, + self.EncourageCnt + ) + return DumpString + + +class tagMCFBEncourageInfo(Structure): + Head = tagHead() + Cnt = 0 #(BYTE Cnt)// + InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x0A + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Cnt): + temInfoList = tagMCFBEncourageCnt() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x0A + self.Cnt = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Cnt): + 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.Cnt) + for i in range(self.Cnt): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Cnt:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Cnt, + "..." ) return DumpString m_NAtagMCFBEncourageInfo=tagMCFBEncourageInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Cmd,m_NAtagMCFBEncourageInfo.SubCmd))] = m_NAtagMCFBEncourageInfo +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Head.Cmd,m_NAtagMCFBEncourageInfo.Head.SubCmd))] = m_NAtagMCFBEncourageInfo #------------------------------------------------------ @@ -12629,6 +13162,7 @@ _pack_ = 1 _fields_ = [ ("PriID", c_int), # 特权ID + ("State", c_ubyte), #激活状态 ("CurValue", c_int), #当前总进度 ("GotValue", c_int), #已领取进度 ("ItemAwardState", c_ubyte), #物品奖励是否已领取 @@ -12645,6 +13179,7 @@ def Clear(self): self.PriID = 0 + self.State = 0 self.CurValue = 0 self.GotValue = 0 self.ItemAwardState = 0 @@ -12659,12 +13194,14 @@ def OutputString(self): DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo: PriID:%d, + State:%d, CurValue:%d, GotValue:%d, ItemAwardState:%d '''\ %( self.PriID, + self.State, self.CurValue, self.GotValue, self.ItemAwardState @@ -12744,16 +13281,12 @@ class tagMCNPCIDCollectionCnt(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), ("NPCID", c_int), #NPCID ("CollectionCnt", c_ubyte), #已采集次数 ] def __init__(self): self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x26 return def ReadData(self, stringData, _pos=0, _len=0): @@ -12762,8 +13295,6 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x26 self.NPCID = 0 self.CollectionCnt = 0 return @@ -12776,14 +13307,10 @@ def OutputString(self): DumpString = '''// A3 26 NPCID已采集次数信息 //tagMCNPCIDCollectionCntInfo: - Cmd:%s, - SubCmd:%s, NPCID:%d, CollectionCnt:%d '''\ %( - self.Cmd, - self.SubCmd, self.NPCID, self.CollectionCnt ) @@ -13436,6 +13963,62 @@ m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg + + +#------------------------------------------------------ +# A3 21 祈福丹药结果 #tagMCPrayElixirResult + +class tagMCPrayElixirResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemID", c_int), # 物品ID + ("PrayCnt", c_ubyte), # 今日祈福次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + 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 = 0xA3 + self.SubCmd = 0x21 + self.ItemID = 0 + self.PrayCnt = 0 + return + + def GetLength(self): + return sizeof(tagMCPrayElixirResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 21 祈福丹药结果 //tagMCPrayElixirResult: + Cmd:%s, + SubCmd:%s, + ItemID:%d, + PrayCnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemID, + self.PrayCnt + ) + return DumpString + + +m_NAtagMCPrayElixirResult=tagMCPrayElixirResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult #------------------------------------------------------ @@ -16139,6 +16722,183 @@ #------------------------------------------------------ +# A7 15 通知仙盟抢Boss伤血信息 #tagMCFamilyBossHurtList + +class tagMCFamilyBossHurt(Structure): + FamilyID = 0 #(DWORD FamilyID)// 所属仙盟ID + HurtID = 0 #(DWORD HurtID)// 伤血的ID, 根据伤血类型表示不同的ID, 如仙盟ID或玩家ID + NameLen = 0 #(BYTE NameLen) + HurtName = "" #(String HurtName) + HurtValue = 0 #(DWORD HurtValue)// 累计伤血,求余1亿的值 + HurtValueEx = 0 #(DWORD HurtValueEx)// 累计伤血,整除1亿的值 + InitTick = 0 #(DWORD InitTick)// 伤血初始tick,用于排序,先按伤血倒序排,再按tick正序排 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.InitTick,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.FamilyID = 0 + self.HurtID = 0 + self.NameLen = 0 + self.HurtName = "" + self.HurtValue = 0 + self.HurtValueEx = 0 + self.InitTick = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 1 + length += len(self.HurtName) + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.FamilyID) + data = CommFunc.WriteDWORD(data, self.HurtID) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.HurtName) + data = CommFunc.WriteDWORD(data, self.HurtValue) + data = CommFunc.WriteDWORD(data, self.HurtValueEx) + data = CommFunc.WriteDWORD(data, self.InitTick) + return data + + def OutputString(self): + DumpString = ''' + FamilyID:%d, + HurtID:%d, + NameLen:%d, + HurtName:%s, + HurtValue:%d, + HurtValueEx:%d, + InitTick:%d + '''\ + %( + self.FamilyID, + self.HurtID, + self.NameLen, + self.HurtName, + self.HurtValue, + self.HurtValueEx, + self.InitTick + ) + return DumpString + + +class tagMCFamilyBossHurtList(Structure): + Head = tagHead() + ObjID = 0 #(DWORD ObjID) + NPCID = 0 #(DWORD NPCID) + HurtType = 0 #(BYTE HurtType)// 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血 + IsSort = 0 #(BYTE IsSort)// 是否排序过的,一般boss被击杀后会统一同步一次排序过的最终结果,其他情况下客户端自己排序 + HurtCount = 0 #(WORD HurtCount)// 伤血个数 + HurtList = list() #(vector<tagMCFamilyBossHurt> HurtList)// 伤血列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x15 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.IsSort,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.HurtCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.HurtCount): + temHurtList = tagMCFamilyBossHurt() + _pos = temHurtList.ReadData(_lpData, _pos) + self.HurtList.append(temHurtList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x15 + self.ObjID = 0 + self.NPCID = 0 + self.HurtType = 0 + self.IsSort = 0 + self.HurtCount = 0 + self.HurtList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 1 + length += 1 + length += 2 + for i in range(self.HurtCount): + length += self.HurtList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.ObjID) + data = CommFunc.WriteDWORD(data, self.NPCID) + data = CommFunc.WriteBYTE(data, self.HurtType) + data = CommFunc.WriteBYTE(data, self.IsSort) + data = CommFunc.WriteWORD(data, self.HurtCount) + for i in range(self.HurtCount): + data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ObjID:%d, + NPCID:%d, + HurtType:%d, + IsSort:%d, + HurtCount:%d, + HurtList:%s + '''\ + %( + self.Head.OutputString(), + self.ObjID, + self.NPCID, + self.HurtType, + self.IsSort, + self.HurtCount, + "..." + ) + return DumpString + + +m_NAtagMCFamilyBossHurtList=tagMCFamilyBossHurtList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBossHurtList.Head.Cmd,m_NAtagMCFamilyBossHurtList.Head.SubCmd))] = m_NAtagMCFamilyBossHurtList + + +#------------------------------------------------------ # A7 03 通知进入副本时间 #tagMCFBEnterTickList class tagMCFBEnterTick(Structure): @@ -16314,6 +17074,121 @@ #------------------------------------------------------ +# A7 14 通知查询的NPC数量 #tagMCNPCCntList + +class tagMCNPCCntInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("NPCID", c_int), + ("Cnt", 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.NPCID = 0 + self.Cnt = 0 + return + + def GetLength(self): + return sizeof(tagMCNPCCntInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A7 14 通知查询的NPC数量 //tagMCNPCCntList: + NPCID:%d, + Cnt:%d + '''\ + %( + self.NPCID, + self.Cnt + ) + return DumpString + + +class tagMCNPCCntList(Structure): + Head = tagHead() + MapID = 0 #(DWORD MapID) + NPCInfoCnt = 0 #(BYTE NPCInfoCnt) + NPCInfoList = list() #(vector<tagMCNPCCntInfo> NPCInfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x14 + 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.NPCInfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NPCInfoCnt): + temNPCInfoList = tagMCNPCCntInfo() + _pos = temNPCInfoList.ReadData(_lpData, _pos) + self.NPCInfoList.append(temNPCInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x14 + self.MapID = 0 + self.NPCInfoCnt = 0 + self.NPCInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + for i in range(self.NPCInfoCnt): + length += self.NPCInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteBYTE(data, self.NPCInfoCnt) + for i in range(self.NPCInfoCnt): + data = CommFunc.WriteString(data, self.NPCInfoList[i].GetLength(), self.NPCInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + MapID:%d, + NPCInfoCnt:%d, + NPCInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.MapID, + self.NPCInfoCnt, + "..." + ) + return DumpString + + +m_NAtagMCNPCCntList=tagMCNPCCntList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCCntList.Head.Cmd,m_NAtagMCNPCCntList.Head.SubCmd))] = m_NAtagMCNPCCntList + + +#------------------------------------------------------ #A7 01 通知选中对象 # tagMCNotifySelectObj class tagMCNotifySelectObj(Structure): @@ -16379,8 +17254,6 @@ class tagMCNPCInfo(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), ("ObjID", c_int), ("NPCID", c_int), ("NPCHP", c_int), @@ -16393,8 +17266,6 @@ def __init__(self): self.Clear() - self.Cmd = 0xA7 - self.SubCmd = 0x06 return def ReadData(self, stringData, _pos=0, _len=0): @@ -16403,8 +17274,6 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA7 - self.SubCmd = 0x06 self.ObjID = 0 self.NPCID = 0 self.NPCHP = 0 @@ -16423,8 +17292,6 @@ def OutputString(self): DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList: - Cmd:%s, - SubCmd:%s, ObjID:%d, NPCID:%d, NPCHP:%d, @@ -16435,8 +17302,6 @@ RefreshSecond:%d '''\ %( - self.Cmd, - self.SubCmd, self.ObjID, self.NPCID, self.NPCHP, @@ -19080,6 +19945,7 @@ Head = tagHead() StartDate = "" #(char StartDate[10])// 开始日期 y-m-d EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟 ActivityTimeCount = 0 #(BYTE ActivityTimeCount) ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间 IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置 @@ -19099,6 +19965,7 @@ _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.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.ActivityTimeCount): temActivityTime = tagMCFlashGiftbagTime() @@ -19120,6 +19987,7 @@ self.Head.SubCmd = 0x12 self.StartDate = "" self.EndtDate = "" + self.AdvanceMinutes = 0 self.ActivityTimeCount = 0 self.ActivityTime = list() self.IsDayReset = 0 @@ -19133,6 +20001,7 @@ length += self.Head.GetLength() length += 10 length += 10 + length += 2 length += 1 for i in range(self.ActivityTimeCount): length += self.ActivityTime[i].GetLength() @@ -19149,6 +20018,7 @@ 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.ActivityTimeCount) for i in range(self.ActivityTimeCount): data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer()) @@ -19164,6 +20034,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + AdvanceMinutes:%d, ActivityTimeCount:%d, ActivityTime:%s, IsDayReset:%d, @@ -19175,6 +20046,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.AdvanceMinutes, self.ActivityTimeCount, "...", self.IsDayReset, @@ -19723,6 +20595,7 @@ Head = tagHead() StartDate = "" #(char StartDate[10])// 开始日期 y-m-d EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟 ActivityTimeCount = 0 #(BYTE ActivityTimeCount) ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间 IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置 @@ -19742,6 +20615,7 @@ _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.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.ActivityTimeCount): temActivityTime = tagMCSpringSaleTime() @@ -19763,6 +20637,7 @@ self.Head.SubCmd = 0x11 self.StartDate = "" self.EndtDate = "" + self.AdvanceMinutes = 0 self.ActivityTimeCount = 0 self.ActivityTime = list() self.IsDayReset = 0 @@ -19776,6 +20651,7 @@ length += self.Head.GetLength() length += 10 length += 10 + length += 2 length += 1 for i in range(self.ActivityTimeCount): length += self.ActivityTime[i].GetLength() @@ -19792,6 +20668,7 @@ 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.ActivityTimeCount) for i in range(self.ActivityTimeCount): data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer()) @@ -19807,6 +20684,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + AdvanceMinutes:%d, ActivityTimeCount:%d, ActivityTime:%s, IsDayReset:%d, @@ -19818,6 +20696,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.AdvanceMinutes, self.ActivityTimeCount, "...", self.IsDayReset, @@ -19830,6 +20709,70 @@ m_NAtagMCSpringSaleInfo=tagMCSpringSaleInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSpringSaleInfo.Head.Cmd,m_NAtagMCSpringSaleInfo.Head.SubCmd))] = m_NAtagMCSpringSaleInfo + + +#------------------------------------------------------ +# AA 16 通知超值礼包信息 #tagMCSuperGiftInfo + +class tagMCSuperGiftInfo(Structure): + Head = tagHead() + GiftID = 0 #(DWORD GiftID)//商品ID + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x16 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x16 + self.GiftID = 0 + self.EndtDate = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 10 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.GiftID) + data = CommFunc.WriteString(data, 10, self.EndtDate) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + GiftID:%d, + EndtDate:%s + '''\ + %( + self.Head.OutputString(), + self.GiftID, + self.EndtDate + ) + return DumpString + + +m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Head.Cmd,m_NAtagMCSuperGiftInfo.Head.SubCmd))] = m_NAtagMCSuperGiftInfo #------------------------------------------------------ @@ -20477,6 +21420,7 @@ Head = tagHead() StartDate = "" #(char StartDate[10])// 开始日期 y-m-d EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 LimitLV = 0 #(WORD LimitLV)// 限制等级 TaskCnt = 0 #(BYTE TaskCnt) TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo) @@ -20493,6 +21437,7 @@ _pos = self.Head.ReadData(_lpData, _pos) self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.TaskCnt): @@ -20508,6 +21453,7 @@ self.Head.SubCmd = 0x04 self.StartDate = "" self.EndtDate = "" + self.ResetType = 0 self.LimitLV = 0 self.TaskCnt = 0 self.TaskInfo = list() @@ -20518,6 +21464,7 @@ length += self.Head.GetLength() length += 10 length += 10 + length += 1 length += 2 length += 1 for i in range(self.TaskCnt): @@ -20530,6 +21477,7 @@ 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.ResetType) data = CommFunc.WriteWORD(data, self.LimitLV) data = CommFunc.WriteBYTE(data, self.TaskCnt) for i in range(self.TaskCnt): @@ -20541,6 +21489,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + ResetType:%d, LimitLV:%d, TaskCnt:%d, TaskInfo:%s @@ -20549,6 +21498,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.ResetType, self.LimitLV, self.TaskCnt, "..." @@ -21558,6 +22508,66 @@ #------------------------------------------------------ +# B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove + +class tagMCNotifyPlayerMove(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PosX", c_int), + ("PosY", c_int), + ("NPCID", c_int), #目标点寻路NPCID, 可能为0 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + self.SubCmd = 0x06 + 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 = 0xB1 + self.SubCmd = 0x06 + self.PosX = 0 + self.PosY = 0 + self.NPCID = 0 + return + + def GetLength(self): + return sizeof(tagMCNotifyPlayerMove) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 06 通知玩家向目标点移动 //tagMCNotifyPlayerMove: + Cmd:%s, + SubCmd:%s, + PosX:%d, + PosY:%d, + NPCID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PosX, + self.PosY, + self.NPCID + ) + return DumpString + + +m_NAtagMCNotifyPlayerMove=tagMCNotifyPlayerMove() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyPlayerMove.Cmd,m_NAtagMCNotifyPlayerMove.SubCmd))] = m_NAtagMCNotifyPlayerMove + + +#------------------------------------------------------ # B1 03 通知玩家死亡时间 #tagMCPlayerDeadTime class tagMCPlayerDeadTime(Structure): -- Gitblit v1.8.0