From 066b40acecd07aa07cb07849f98f4e39d67eb189 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 12 十月 2018 19:48:09 +0800 Subject: [PATCH] 4145 【后端】人物粉色品质防具装备的合成与拆解 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 1031 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 968 insertions(+), 63 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index a49e731..0fbe5fd 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/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 @@ -4193,6 +4510,7 @@ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d WorldLV = 0 #(WORD WorldLV)// 世界等级 LimitLV = 0 #(WORD LimitLV)// 限制等级 + ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置 data = None def __init__(self): @@ -4208,6 +4526,7 @@ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos def Clear(self): @@ -4219,6 +4538,7 @@ self.EndtDate = "" self.WorldLV = 0 self.LimitLV = 0 + self.ResetType = 0 return def GetLength(self): @@ -4228,6 +4548,7 @@ length += 10 length += 2 length += 2 + length += 1 return length @@ -4238,6 +4559,7 @@ data = CommFunc.WriteString(data, 10, self.EndtDate) data = CommFunc.WriteWORD(data, self.WorldLV) data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.ResetType) return data def OutputString(self): @@ -4246,14 +4568,16 @@ StartDate:%s, EndtDate:%s, WorldLV:%d, - LimitLV:%d + LimitLV:%d, + ResetType:%d '''\ %( self.Head.OutputString(), self.StartDate, self.EndtDate, self.WorldLV, - self.LimitLV + self.LimitLV, + self.ResetType ) return DumpString @@ -9952,6 +10276,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): @@ -11272,19 +11652,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): @@ -11293,36 +11669,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 #------------------------------------------------------ @@ -12856,16 +13288,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): @@ -12874,8 +13302,6 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x26 self.NPCID = 0 self.CollectionCnt = 0 return @@ -12888,14 +13314,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 ) @@ -13548,6 +13970,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 #------------------------------------------------------ @@ -16251,6 +16729,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): @@ -16426,6 +17081,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): @@ -16491,8 +17261,6 @@ class tagMCNPCInfo(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), ("ObjID", c_int), ("NPCID", c_int), ("NPCHP", c_int), @@ -16505,8 +17273,6 @@ def __init__(self): self.Clear() - self.Cmd = 0xA7 - self.SubCmd = 0x06 return def ReadData(self, stringData, _pos=0, _len=0): @@ -16515,8 +17281,6 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA7 - self.SubCmd = 0x06 self.ObjID = 0 self.NPCID = 0 self.NPCHP = 0 @@ -16535,8 +17299,6 @@ def OutputString(self): DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList: - Cmd:%s, - SubCmd:%s, ObjID:%d, NPCID:%d, NPCHP:%d, @@ -16547,8 +17309,6 @@ RefreshSecond:%d '''\ %( - self.Cmd, - self.SubCmd, self.ObjID, self.NPCID, self.NPCHP, @@ -19192,6 +19952,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)//是否每天重置 @@ -19211,6 +19972,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() @@ -19232,6 +19994,7 @@ self.Head.SubCmd = 0x12 self.StartDate = "" self.EndtDate = "" + self.AdvanceMinutes = 0 self.ActivityTimeCount = 0 self.ActivityTime = list() self.IsDayReset = 0 @@ -19245,6 +20008,7 @@ length += self.Head.GetLength() length += 10 length += 10 + length += 2 length += 1 for i in range(self.ActivityTimeCount): length += self.ActivityTime[i].GetLength() @@ -19261,6 +20025,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()) @@ -19276,6 +20041,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + AdvanceMinutes:%d, ActivityTimeCount:%d, ActivityTime:%s, IsDayReset:%d, @@ -19287,6 +20053,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.AdvanceMinutes, self.ActivityTimeCount, "...", self.IsDayReset, @@ -19835,6 +20602,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)//是否每天重置 @@ -19854,6 +20622,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() @@ -19875,6 +20644,7 @@ self.Head.SubCmd = 0x11 self.StartDate = "" self.EndtDate = "" + self.AdvanceMinutes = 0 self.ActivityTimeCount = 0 self.ActivityTime = list() self.IsDayReset = 0 @@ -19888,6 +20658,7 @@ length += self.Head.GetLength() length += 10 length += 10 + length += 2 length += 1 for i in range(self.ActivityTimeCount): length += self.ActivityTime[i].GetLength() @@ -19904,6 +20675,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()) @@ -19919,6 +20691,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + AdvanceMinutes:%d, ActivityTimeCount:%d, ActivityTime:%s, IsDayReset:%d, @@ -19930,6 +20703,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.AdvanceMinutes, self.ActivityTimeCount, "...", self.IsDayReset, @@ -19942,6 +20716,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 #------------------------------------------------------ @@ -20589,6 +21427,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) @@ -20605,6 +21444,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): @@ -20620,6 +21460,7 @@ self.Head.SubCmd = 0x04 self.StartDate = "" self.EndtDate = "" + self.ResetType = 0 self.LimitLV = 0 self.TaskCnt = 0 self.TaskInfo = list() @@ -20630,6 +21471,7 @@ length += self.Head.GetLength() length += 10 length += 10 + length += 1 length += 2 length += 1 for i in range(self.TaskCnt): @@ -20642,6 +21484,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): @@ -20653,6 +21496,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + ResetType:%d, LimitLV:%d, TaskCnt:%d, TaskInfo:%s @@ -20661,6 +21505,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.ResetType, self.LimitLV, self.TaskCnt, "..." @@ -21670,6 +22515,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