From 015bda0f16e211353534cbdcc95df92590dba881 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 24 十二月 2018 10:14:48 +0800 Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(封包、赛区赛季表) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 273 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 217 insertions(+), 56 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 3d2aed2..3a2b105 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -8510,19 +8510,156 @@ #------------------------------------------------------ -# C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason +# C0 04 跨服PK赛区赛季信息 #tagGCCrossRealmPKSeasonInfo class tagGCCrossRealmPKSeason(Structure): - Head = tagHead() - ZoneCount = 0 #(BYTE ZoneCount)// 所有赛区个数 - ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有赛区列表 - ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID SeasonID = 0 #(WORD SeasonID)// 当前赛季ID StartDate = "" #(char StartDate[10])// 开始日期 yyyy-MM-dd EndDate = "" #(char EndDate[10])// 结束日期 yyyy-MM-dd EndTime = "" #(char EndTime[5])// 赛季结算时间,赛季奖励该时间后才可领取 hh:mm NextStartDate = "" #(char NextStartDate[10])// 下赛季开始日期 yyyy-MM-dd NextEndDate = "" #(char NextEndDate[10])// 下赛季结束日期 yyyy-MM-dd + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) + self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + return _pos + + def Clear(self): + self.SeasonID = 0 + self.StartDate = "" + self.EndDate = "" + self.EndTime = "" + self.NextStartDate = "" + self.NextEndDate = "" + return + + def GetLength(self): + length = 0 + length += 2 + length += 10 + length += 10 + length += 5 + length += 10 + length += 10 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteWORD(data, self.SeasonID) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndDate) + data = CommFunc.WriteString(data, 5, self.EndTime) + data = CommFunc.WriteString(data, 10, self.NextStartDate) + data = CommFunc.WriteString(data, 10, self.NextEndDate) + return data + + def OutputString(self): + DumpString = ''' + SeasonID:%d, + StartDate:%s, + EndDate:%s, + EndTime:%s, + NextStartDate:%s, + NextEndDate:%s + '''\ + %( + self.SeasonID, + self.StartDate, + self.EndDate, + self.EndTime, + self.NextStartDate, + self.NextEndDate + ) + return DumpString + + +class tagGCCrossRealmPKZone(Structure): + ZoneID = 0 #(BYTE ZoneID)// 赛区ID + ZoneNameLen = 0 #(BYTE ZoneNameLen) + ZoneName = "" #(String ZoneName)// 赛区名 + SeasonCount = 0 #(WORD SeasonCount) + SeasonList = list() #(vector<tagGCCrossRealmPKSeason> SeasonList)// 赛季列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.ZoneNameLen) + self.SeasonCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.SeasonCount): + temSeasonList = tagGCCrossRealmPKSeason() + _pos = temSeasonList.ReadData(_lpData, _pos) + self.SeasonList.append(temSeasonList) + return _pos + + def Clear(self): + self.ZoneID = 0 + self.ZoneNameLen = 0 + self.ZoneName = "" + self.SeasonCount = 0 + self.SeasonList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += len(self.ZoneName) + length += 2 + for i in range(self.SeasonCount): + length += self.SeasonList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.ZoneID) + data = CommFunc.WriteBYTE(data, self.ZoneNameLen) + data = CommFunc.WriteString(data, self.ZoneNameLen, self.ZoneName) + data = CommFunc.WriteWORD(data, self.SeasonCount) + for i in range(self.SeasonCount): + data = CommFunc.WriteString(data, self.SeasonList[i].GetLength(), self.SeasonList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + ZoneID:%d, + ZoneNameLen:%d, + ZoneName:%s, + SeasonCount:%d, + SeasonList:%s + '''\ + %( + self.ZoneID, + self.ZoneNameLen, + self.ZoneName, + self.SeasonCount, + "..." + ) + return DumpString + + +class tagGCCrossRealmPKSeasonInfo(Structure): + Head = tagHead() + ZoneCount = 0 #(BYTE ZoneCount)// 赛区个数 + ZoneList = list() #(vector<tagGCCrossRealmPKZone> ZoneList)// 赛区列表 data = None def __init__(self): @@ -8536,15 +8673,9 @@ _pos = self.Head.ReadData(_lpData, _pos) self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.ZoneCount): - value,_pos=CommFunc.ReadBYTE(_lpData,_pos) - self.ZoneIDList.append(value) - self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) - self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10) - self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) - self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) - self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + temZoneList = tagGCCrossRealmPKZone() + _pos = temZoneList.ReadData(_lpData, _pos) + self.ZoneList.append(temZoneList) return _pos def Clear(self): @@ -8553,28 +8684,15 @@ self.Head.Cmd = 0xC0 self.Head.SubCmd = 0x04 self.ZoneCount = 0 - self.ZoneIDList = list() - self.ZoneID = 0 - self.SeasonID = 0 - self.StartDate = "" - self.EndDate = "" - self.EndTime = "" - self.NextStartDate = "" - self.NextEndDate = "" + self.ZoneList = list() return def GetLength(self): length = 0 length += self.Head.GetLength() length += 1 - length += 1 * self.ZoneCount - length += 1 - length += 2 - length += 10 - length += 10 - length += 5 - length += 10 - length += 10 + for i in range(self.ZoneCount): + length += self.ZoneList[i].GetLength() return length @@ -8583,46 +8701,89 @@ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) data = CommFunc.WriteBYTE(data, self.ZoneCount) for i in range(self.ZoneCount): - data = CommFunc.WriteBYTE(data, self.ZoneIDList[i]) - data = CommFunc.WriteBYTE(data, self.ZoneID) - data = CommFunc.WriteWORD(data, self.SeasonID) - data = CommFunc.WriteString(data, 10, self.StartDate) - data = CommFunc.WriteString(data, 10, self.EndDate) - data = CommFunc.WriteString(data, 5, self.EndTime) - data = CommFunc.WriteString(data, 10, self.NextStartDate) - data = CommFunc.WriteString(data, 10, self.NextEndDate) + data = CommFunc.WriteString(data, self.ZoneList[i].GetLength(), self.ZoneList[i].GetBuffer()) return data def OutputString(self): DumpString = ''' Head:%s, ZoneCount:%d, - ZoneIDList:%s, - ZoneID:%d, - SeasonID:%d, - StartDate:%s, - EndDate:%s, - EndTime:%s, - NextStartDate:%s, - NextEndDate:%s + ZoneList:%s '''\ %( self.Head.OutputString(), self.ZoneCount, - "...", - self.ZoneID, - self.SeasonID, - self.StartDate, - self.EndDate, - self.EndTime, - self.NextStartDate, - self.NextEndDate + "..." ) return DumpString -m_NAtagGCCrossRealmPKSeason=tagGCCrossRealmPKSeason() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeason.Head.Cmd,m_NAtagGCCrossRealmPKSeason.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeason +m_NAtagGCCrossRealmPKSeasonInfo=tagGCCrossRealmPKSeasonInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonInfo.Head.Cmd,m_NAtagGCCrossRealmPKSeasonInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonInfo + + +#------------------------------------------------------ +# C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState + +class tagGCCrossRealmPKSeasonState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ZoneID", c_ubyte), # 所属赛区ID + ("SeasonID", c_ushort), # 当前赛季ID + ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束 + ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x06 + self.ZoneID = 0 + self.SeasonID = 0 + self.SeasonState = 0 + self.MatchState = 0 + return + + def GetLength(self): + return sizeof(tagGCCrossRealmPKSeasonState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState: + Cmd:%s, + SubCmd:%s, + ZoneID:%d, + SeasonID:%d, + SeasonState:%d, + MatchState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ZoneID, + self.SeasonID, + self.SeasonState, + self.MatchState + ) + return DumpString + + +m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState #------------------------------------------------------ -- Gitblit v1.8.0