From bcdc9a6cf4da4c82e458b3c4232391a7a0ff9f90 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期四, 11 十月 2018 11:56:51 +0800 Subject: [PATCH] 4142 【后端】仙魔之争增加一个超级机器人 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 293 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 234 insertions(+), 59 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 79008bf..0fbe5fd 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -311,78 +311,92 @@ #A0 05 同步开服天数 #tagOpenServerDay class tagOpenServerDay(Structure): - Head = tagHead() - Day = 0 #(WORD Day)// 已开服天数,从0开始 - IsMixServer = 0 #(BYTE IsMixServer)//是否是合服服务器 - MixDay = 0 #(WORD MixDay)// 已合服天数,从0开始 - OpenServerTime = "" #(char OpenServerTime[19])//开服时间yyyy-MM-dd HH:mm:ss - data = None + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("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): self.Clear() - self.Head.Cmd = 0xA0 - self.Head.SubCmd = 0x05 + self.Cmd = 0xA0 + self.SubCmd = 0x05 return - def ReadData(self, _lpData, _pos=0, _Len=0): + def ReadData(self, stringData, _pos=0, _len=0): self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.Day,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.IsMixServer,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.MixDay,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.OpenServerTime,_pos = CommFunc.ReadString(_lpData, _pos,19) - return _pos + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA0 - self.Head.SubCmd = 0x05 + self.Cmd = 0xA0 + self.SubCmd = 0x05 self.Day = 0 self.IsMixServer = 0 self.MixDay = 0 - self.OpenServerTime = "" + 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): - length = 0 - length += self.Head.GetLength() - length += 2 - length += 1 - length += 2 - length += 19 - - return length + return sizeof(tagOpenServerDay) def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteWORD(data, self.Day) - data = CommFunc.WriteBYTE(data, self.IsMixServer) - data = CommFunc.WriteWORD(data, self.MixDay) - data = CommFunc.WriteString(data, 19, self.OpenServerTime) - return data + return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = ''' - Head:%s, + DumpString = '''//A0 05 同步开服天数 //tagOpenServerDay: + Cmd:%s, + SubCmd:%s, Day:%d, IsMixServer:%d, MixDay:%d, - OpenServerTime:%s + OpenWeekday:%d, + NowYear:%d, + NowMonth:%d, + NowDay:%d, + NowHour:%d, + NowMinute:%d, + NowSecond:%d, + NowMicSecond:%d '''\ %( - self.Head.OutputString(), + self.Cmd, + self.SubCmd, self.Day, self.IsMixServer, self.MixDay, - self.OpenServerTime + self.OpenWeekday, + self.NowYear, + self.NowMonth, + self.NowDay, + self.NowHour, + self.NowMinute, + self.NowSecond, + self.NowMicSecond ) return DumpString m_NAtagOpenServerDay=tagOpenServerDay() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Head.Cmd,m_NAtagOpenServerDay.Head.SubCmd))] = m_NAtagOpenServerDay +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Cmd,m_NAtagOpenServerDay.SubCmd))] = m_NAtagOpenServerDay #------------------------------------------------------ @@ -2303,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): @@ -2314,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 @@ -2886,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): @@ -2899,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): @@ -2907,6 +2933,7 @@ self.RecordLen = 0 self.KillRecord = "" self.RefreshSecond = 0 + self.RefreshCD = 0 return def GetLength(self): @@ -2915,6 +2942,7 @@ length += 1 length += 2 length += len(self.KillRecord) + length += 4 length += 4 return length @@ -2926,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): @@ -2934,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 @@ -4479,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): @@ -4494,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): @@ -4505,6 +4538,7 @@ self.EndtDate = "" self.WorldLV = 0 self.LimitLV = 0 + self.ResetType = 0 return def GetLength(self): @@ -4514,6 +4548,7 @@ length += 10 length += 2 length += 2 + length += 1 return length @@ -4524,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): @@ -4532,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 @@ -10235,6 +10273,62 @@ m_NAtagMCAttrFruitEatCntList=tagMCAttrFruitEatCntList() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAttrFruitEatCntList.Head.Cmd,m_NAtagMCAttrFruitEatCntList.Head.SubCmd))] = m_NAtagMCAttrFruitEatCntList + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -19858,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)//是否每天重置 @@ -19877,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() @@ -19898,6 +19994,7 @@ self.Head.SubCmd = 0x12 self.StartDate = "" self.EndtDate = "" + self.AdvanceMinutes = 0 self.ActivityTimeCount = 0 self.ActivityTime = list() self.IsDayReset = 0 @@ -19911,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() @@ -19927,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()) @@ -19942,6 +20041,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + AdvanceMinutes:%d, ActivityTimeCount:%d, ActivityTime:%s, IsDayReset:%d, @@ -19953,6 +20053,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.AdvanceMinutes, self.ActivityTimeCount, "...", self.IsDayReset, @@ -20501,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)//是否每天重置 @@ -20520,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() @@ -20541,6 +20644,7 @@ self.Head.SubCmd = 0x11 self.StartDate = "" self.EndtDate = "" + self.AdvanceMinutes = 0 self.ActivityTimeCount = 0 self.ActivityTime = list() self.IsDayReset = 0 @@ -20554,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() @@ -20570,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()) @@ -20585,6 +20691,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + AdvanceMinutes:%d, ActivityTimeCount:%d, ActivityTime:%s, IsDayReset:%d, @@ -20596,6 +20703,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.AdvanceMinutes, self.ActivityTimeCount, "...", self.IsDayReset, @@ -21319,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) @@ -21335,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): @@ -21350,6 +21460,7 @@ self.Head.SubCmd = 0x04 self.StartDate = "" self.EndtDate = "" + self.ResetType = 0 self.LimitLV = 0 self.TaskCnt = 0 self.TaskInfo = list() @@ -21360,6 +21471,7 @@ length += self.Head.GetLength() length += 10 length += 10 + length += 1 length += 2 length += 1 for i in range(self.TaskCnt): @@ -21372,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): @@ -21383,6 +21496,7 @@ Head:%s, StartDate:%s, EndtDate:%s, + ResetType:%d, LimitLV:%d, TaskCnt:%d, TaskInfo:%s @@ -21391,6 +21505,7 @@ self.Head.OutputString(), self.StartDate, self.EndtDate, + self.ResetType, self.LimitLV, self.TaskCnt, "..." @@ -22400,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