From 572c67c78f4c34dbda4b44b365c14cb4b2d9c68d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 20 十二月 2018 16:41:43 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(封包)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 156 +++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 381 +++++++++++++++++++-
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 156 +++++--
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 381 +++++++++++++++++++-
4 files changed, 920 insertions(+), 154 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index bded447..8b5abdb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -15137,58 +15137,6 @@
#------------------------------------------------------
-#C1 03 领取奖励表奖励 #tagMSGetReward
-
-class tagMSGetReward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("RewardType", c_ubyte), #奖励表奖励类型
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xC1
- self.SubCmd = 0x03
- 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 = 0xC1
- self.SubCmd = 0x03
- self.RewardType = 0
- return
-
- def GetLength(self):
- return sizeof(tagMSGetReward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//C1 03 领取奖励表奖励 //tagMSGetReward:
- Cmd:%s,
- SubCmd:%s,
- RewardType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.RewardType
- )
- return DumpString
-
-
-m_NAtagMSGetReward=tagMSGetReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMSGetReward.Cmd,m_NAtagMSGetReward.SubCmd))] = m_NAtagMSGetReward
-
-
-#------------------------------------------------------
#C1 08 玩家执行膜拜 #tagPlayerMergeWorship
class tagPlayerMergeWorship(Structure):
@@ -15237,6 +15185,110 @@
#------------------------------------------------------
+# C1 02 跨服PK购买次数 #tagCMCrossRealmPKBuy
+
+class tagCMCrossRealmPKBuy(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x02
+ 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 = 0xC1
+ self.SubCmd = 0x02
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossRealmPKBuy)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 02 跨服PK购买次数 //tagCMCrossRealmPKBuy:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMCrossRealmPKBuy=tagCMCrossRealmPKBuy()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKBuy.Cmd,m_NAtagCMCrossRealmPKBuy.SubCmd))] = m_NAtagCMCrossRealmPKBuy
+
+
+#------------------------------------------------------
+# C1 03 跨服PK领取奖励 #tagCMCrossRealmPKGetAward
+
+class tagCMCrossRealmPKGetAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("AwardType", c_ubyte), # 奖励类型;1-每日匹配奖励,2-每日胜利奖励,3-段位达标奖励,4-赛季结算奖励
+ ("AwardData", c_ubyte), # 奖励类型对应领取值;每日匹配奖励时为匹配次数,每日胜利奖励时为胜利次数,段位达标奖励时为领取的段位
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x03
+ 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 = 0xC1
+ self.SubCmd = 0x03
+ self.AwardType = 0
+ self.AwardData = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossRealmPKGetAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 03 跨服PK领取奖励 //tagCMCrossRealmPKGetAward:
+ Cmd:%s,
+ SubCmd:%s,
+ AwardType:%d,
+ AwardData:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.AwardType,
+ self.AwardData
+ )
+ return DumpString
+
+
+m_NAtagCMCrossRealmPKGetAward=tagCMCrossRealmPKGetAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKGetAward.Cmd,m_NAtagCMCrossRealmPKGetAward.SubCmd))] = m_NAtagCMCrossRealmPKGetAward
+
+
+#------------------------------------------------------
# C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch
class tagCMCrossRealmPKMatch(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index c49f536..b6309d3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -8049,13 +8049,85 @@
#------------------------------------------------------
# C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK
-class tagGCCrossRealmPKMatchOK(Structure):
- Head = tagHead()
+class tagGCCrossRealmPKMatchPlayer(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
NameLen = 0 #(BYTE NameLen)
PlayerName = "" #(String PlayerName)// 跨服名字
- TagNameLen = 0 #(BYTE TagNameLen)
- TagPlayerName = "" #(String TagPlayerName)// 对手名字
- TagJob = 0 #(BYTE TagJob)// 对手职业
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ MaxHP = 0 #(DWORD MaxHP)// 默认满血
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.MaxHP = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.PlayerName)
+ length += 1
+ length += 2
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.MaxHP)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ MaxHP:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.NameLen,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.MaxHP
+ )
+ return DumpString
+
+
+class tagGCCrossRealmPKMatchOK(Structure):
+ Head = tagHead()
+ RoomID = 0 #(WORD RoomID)// 房间ID
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)// 跨服名字
+ MatchPlayer=tagGCCrossRealmPKMatchPlayer() #(tagGCCrossRealmPKMatchPlayer MatchPlayer)// 匹配到的玩家
data = None
def __init__(self):
@@ -8067,11 +8139,10 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.TagJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ _pos = self.MatchPlayer.ReadData(_lpData,_pos)
return _pos
def Clear(self):
@@ -8079,50 +8150,46 @@
self.Head.Clear()
self.Head.Cmd = 0xC0
self.Head.SubCmd = 0x01
+ self.RoomID = 0
self.NameLen = 0
self.PlayerName = ""
- self.TagNameLen = 0
- self.TagPlayerName = ""
- self.TagJob = 0
+ self.MatchPlayer=tagGCCrossRealmPKMatchPlayer()
+ self.MatchPlayer.Clear()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 2
length += 1
length += len(self.PlayerName)
- length += 1
- length += len(self.TagPlayerName)
- length += 1
+ length += self.MatchPlayer.GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RoomID)
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.TagNameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.TagPlayerName)
- data = CommFunc.WriteBYTE(data, self.TagJob)
+ data = CommFunc.WriteString(data,self.MatchPlayer.GetLength(),self.MatchPlayer.GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
+ RoomID:%d,
NameLen:%d,
PlayerName:%s,
- TagNameLen:%d,
- TagPlayerName:%s,
- TagJob:%d
+ MatchPlayer:%s
'''\
%(
self.Head.OutputString(),
+ self.RoomID,
self.NameLen,
self.PlayerName,
- self.TagNameLen,
- self.TagPlayerName,
- self.TagJob
+ self.MatchPlayer.OutputString()
)
return DumpString
@@ -8259,6 +8326,122 @@
m_NAtagGCCrossRealmPKOverInfo=tagGCCrossRealmPKOverInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKOverInfo.Head.Cmd,m_NAtagGCCrossRealmPKOverInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKOverInfo
+
+
+#------------------------------------------------------
+# C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
+
+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()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _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)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ 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 = ""
+ 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
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ 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)
+ 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
+ '''\
+ %(
+ 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
#------------------------------------------------------
@@ -17184,6 +17367,7 @@
("APosY", c_ushort),
("BPosX", c_ushort),
("BPosY", c_ushort),
+ ("Angle", c_ushort),
]
def __init__(self):
@@ -17200,6 +17384,7 @@
self.APosY = 0
self.BPosX = 0
self.BPosY = 0
+ self.Angle = 0
return
def GetLength(self):
@@ -17213,13 +17398,15 @@
APosX:%d,
APosY:%d,
BPosX:%d,
- BPosY:%d
+ BPosY:%d,
+ Angle:%d
'''\
%(
self.APosX,
self.APosY,
self.BPosX,
- self.BPosY
+ self.BPosY,
+ self.Angle
)
return DumpString
@@ -27147,6 +27334,150 @@
#------------------------------------------------------
+# C1 02 跨服PK玩家奖励记录 #tagMCCrossRealmPKAwardState
+
+class tagMCCrossRealmPKAwardState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DayPKCountAwardState", c_int), # 每日匹配次数奖励记录,二进制位存储是否已领取,按匹配次数升序排序索引代表奖励位
+ ("DayWinCountAwardState", c_int), # 每日胜利次数奖励记录,二进制位存储是否已领取,按胜利次数升序排序索引代表奖励位
+ ("DanLVAwardState", c_int), # 段位达标奖励记录,二进制位存储是否已领取,按段位代表奖励位
+ ("SeasonAwardState", c_ubyte), # 赛季结算奖励是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x02
+ 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 = 0xC1
+ self.SubCmd = 0x02
+ self.DayPKCountAwardState = 0
+ self.DayWinCountAwardState = 0
+ self.DanLVAwardState = 0
+ self.SeasonAwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossRealmPKAwardState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 02 跨服PK玩家奖励记录 //tagMCCrossRealmPKAwardState:
+ Cmd:%s,
+ SubCmd:%s,
+ DayPKCountAwardState:%d,
+ DayWinCountAwardState:%d,
+ DanLVAwardState:%d,
+ SeasonAwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DayPKCountAwardState,
+ self.DayWinCountAwardState,
+ self.DanLVAwardState,
+ self.SeasonAwardState
+ )
+ return DumpString
+
+
+m_NAtagMCCrossRealmPKAwardState=tagMCCrossRealmPKAwardState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKAwardState.Cmd,m_NAtagMCCrossRealmPKAwardState.SubCmd))] = m_NAtagMCCrossRealmPKAwardState
+
+
+#------------------------------------------------------
+# C1 01 跨服PK玩家信息 #tagMCCrossRealmPKPlayerInfo
+
+class tagMCCrossRealmPKPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Score", c_int), # 当前积分
+ ("DanLV", c_ubyte), # 当前段位
+ ("PKCount", c_ushort), # PK次数
+ ("WinCount", c_ushort), # 胜利次数
+ ("CWinCount", c_ushort), # 连胜次数
+ ("DayPKCount", c_ubyte), # 当日已PK次数
+ ("DayWinCount", c_ubyte), # 当日已胜利次数
+ ("DayBuyCount", c_ubyte), # 当日已购买次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x01
+ 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 = 0xC1
+ self.SubCmd = 0x01
+ self.Score = 0
+ self.DanLV = 0
+ self.PKCount = 0
+ self.WinCount = 0
+ self.CWinCount = 0
+ self.DayPKCount = 0
+ self.DayWinCount = 0
+ self.DayBuyCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossRealmPKPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 01 跨服PK玩家信息 //tagMCCrossRealmPKPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ Score:%d,
+ DanLV:%d,
+ PKCount:%d,
+ WinCount:%d,
+ CWinCount:%d,
+ DayPKCount:%d,
+ DayWinCount:%d,
+ DayBuyCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Score,
+ self.DanLV,
+ self.PKCount,
+ self.WinCount,
+ self.CWinCount,
+ self.DayPKCount,
+ self.DayWinCount,
+ self.DayBuyCount
+ )
+ return DumpString
+
+
+m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
+
+
+#------------------------------------------------------
#D2 01 跨服赛报名(上传数据)状态 #tagMergeWarRegisterState
class tagMergeWarRegisterState(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index bded447..8b5abdb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -15137,58 +15137,6 @@
#------------------------------------------------------
-#C1 03 领取奖励表奖励 #tagMSGetReward
-
-class tagMSGetReward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("RewardType", c_ubyte), #奖励表奖励类型
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xC1
- self.SubCmd = 0x03
- 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 = 0xC1
- self.SubCmd = 0x03
- self.RewardType = 0
- return
-
- def GetLength(self):
- return sizeof(tagMSGetReward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//C1 03 领取奖励表奖励 //tagMSGetReward:
- Cmd:%s,
- SubCmd:%s,
- RewardType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.RewardType
- )
- return DumpString
-
-
-m_NAtagMSGetReward=tagMSGetReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMSGetReward.Cmd,m_NAtagMSGetReward.SubCmd))] = m_NAtagMSGetReward
-
-
-#------------------------------------------------------
#C1 08 玩家执行膜拜 #tagPlayerMergeWorship
class tagPlayerMergeWorship(Structure):
@@ -15237,6 +15185,110 @@
#------------------------------------------------------
+# C1 02 跨服PK购买次数 #tagCMCrossRealmPKBuy
+
+class tagCMCrossRealmPKBuy(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x02
+ 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 = 0xC1
+ self.SubCmd = 0x02
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossRealmPKBuy)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 02 跨服PK购买次数 //tagCMCrossRealmPKBuy:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMCrossRealmPKBuy=tagCMCrossRealmPKBuy()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKBuy.Cmd,m_NAtagCMCrossRealmPKBuy.SubCmd))] = m_NAtagCMCrossRealmPKBuy
+
+
+#------------------------------------------------------
+# C1 03 跨服PK领取奖励 #tagCMCrossRealmPKGetAward
+
+class tagCMCrossRealmPKGetAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("AwardType", c_ubyte), # 奖励类型;1-每日匹配奖励,2-每日胜利奖励,3-段位达标奖励,4-赛季结算奖励
+ ("AwardData", c_ubyte), # 奖励类型对应领取值;每日匹配奖励时为匹配次数,每日胜利奖励时为胜利次数,段位达标奖励时为领取的段位
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x03
+ 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 = 0xC1
+ self.SubCmd = 0x03
+ self.AwardType = 0
+ self.AwardData = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossRealmPKGetAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 03 跨服PK领取奖励 //tagCMCrossRealmPKGetAward:
+ Cmd:%s,
+ SubCmd:%s,
+ AwardType:%d,
+ AwardData:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.AwardType,
+ self.AwardData
+ )
+ return DumpString
+
+
+m_NAtagCMCrossRealmPKGetAward=tagCMCrossRealmPKGetAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKGetAward.Cmd,m_NAtagCMCrossRealmPKGetAward.SubCmd))] = m_NAtagCMCrossRealmPKGetAward
+
+
+#------------------------------------------------------
# C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch
class tagCMCrossRealmPKMatch(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c49f536..b6309d3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -8049,13 +8049,85 @@
#------------------------------------------------------
# C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK
-class tagGCCrossRealmPKMatchOK(Structure):
- Head = tagHead()
+class tagGCCrossRealmPKMatchPlayer(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
NameLen = 0 #(BYTE NameLen)
PlayerName = "" #(String PlayerName)// 跨服名字
- TagNameLen = 0 #(BYTE TagNameLen)
- TagPlayerName = "" #(String TagPlayerName)// 对手名字
- TagJob = 0 #(BYTE TagJob)// 对手职业
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ MaxHP = 0 #(DWORD MaxHP)// 默认满血
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.MaxHP = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.PlayerName)
+ length += 1
+ length += 2
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.MaxHP)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ MaxHP:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.NameLen,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.MaxHP
+ )
+ return DumpString
+
+
+class tagGCCrossRealmPKMatchOK(Structure):
+ Head = tagHead()
+ RoomID = 0 #(WORD RoomID)// 房间ID
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)// 跨服名字
+ MatchPlayer=tagGCCrossRealmPKMatchPlayer() #(tagGCCrossRealmPKMatchPlayer MatchPlayer)// 匹配到的玩家
data = None
def __init__(self):
@@ -8067,11 +8139,10 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.TagJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ _pos = self.MatchPlayer.ReadData(_lpData,_pos)
return _pos
def Clear(self):
@@ -8079,50 +8150,46 @@
self.Head.Clear()
self.Head.Cmd = 0xC0
self.Head.SubCmd = 0x01
+ self.RoomID = 0
self.NameLen = 0
self.PlayerName = ""
- self.TagNameLen = 0
- self.TagPlayerName = ""
- self.TagJob = 0
+ self.MatchPlayer=tagGCCrossRealmPKMatchPlayer()
+ self.MatchPlayer.Clear()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 2
length += 1
length += len(self.PlayerName)
- length += 1
- length += len(self.TagPlayerName)
- length += 1
+ length += self.MatchPlayer.GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RoomID)
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.TagNameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.TagPlayerName)
- data = CommFunc.WriteBYTE(data, self.TagJob)
+ data = CommFunc.WriteString(data,self.MatchPlayer.GetLength(),self.MatchPlayer.GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
+ RoomID:%d,
NameLen:%d,
PlayerName:%s,
- TagNameLen:%d,
- TagPlayerName:%s,
- TagJob:%d
+ MatchPlayer:%s
'''\
%(
self.Head.OutputString(),
+ self.RoomID,
self.NameLen,
self.PlayerName,
- self.TagNameLen,
- self.TagPlayerName,
- self.TagJob
+ self.MatchPlayer.OutputString()
)
return DumpString
@@ -8259,6 +8326,122 @@
m_NAtagGCCrossRealmPKOverInfo=tagGCCrossRealmPKOverInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKOverInfo.Head.Cmd,m_NAtagGCCrossRealmPKOverInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKOverInfo
+
+
+#------------------------------------------------------
+# C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
+
+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()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _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)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ 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 = ""
+ 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
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ 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)
+ 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
+ '''\
+ %(
+ 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
#------------------------------------------------------
@@ -17184,6 +17367,7 @@
("APosY", c_ushort),
("BPosX", c_ushort),
("BPosY", c_ushort),
+ ("Angle", c_ushort),
]
def __init__(self):
@@ -17200,6 +17384,7 @@
self.APosY = 0
self.BPosX = 0
self.BPosY = 0
+ self.Angle = 0
return
def GetLength(self):
@@ -17213,13 +17398,15 @@
APosX:%d,
APosY:%d,
BPosX:%d,
- BPosY:%d
+ BPosY:%d,
+ Angle:%d
'''\
%(
self.APosX,
self.APosY,
self.BPosX,
- self.BPosY
+ self.BPosY,
+ self.Angle
)
return DumpString
@@ -27147,6 +27334,150 @@
#------------------------------------------------------
+# C1 02 跨服PK玩家奖励记录 #tagMCCrossRealmPKAwardState
+
+class tagMCCrossRealmPKAwardState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DayPKCountAwardState", c_int), # 每日匹配次数奖励记录,二进制位存储是否已领取,按匹配次数升序排序索引代表奖励位
+ ("DayWinCountAwardState", c_int), # 每日胜利次数奖励记录,二进制位存储是否已领取,按胜利次数升序排序索引代表奖励位
+ ("DanLVAwardState", c_int), # 段位达标奖励记录,二进制位存储是否已领取,按段位代表奖励位
+ ("SeasonAwardState", c_ubyte), # 赛季结算奖励是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x02
+ 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 = 0xC1
+ self.SubCmd = 0x02
+ self.DayPKCountAwardState = 0
+ self.DayWinCountAwardState = 0
+ self.DanLVAwardState = 0
+ self.SeasonAwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossRealmPKAwardState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 02 跨服PK玩家奖励记录 //tagMCCrossRealmPKAwardState:
+ Cmd:%s,
+ SubCmd:%s,
+ DayPKCountAwardState:%d,
+ DayWinCountAwardState:%d,
+ DanLVAwardState:%d,
+ SeasonAwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DayPKCountAwardState,
+ self.DayWinCountAwardState,
+ self.DanLVAwardState,
+ self.SeasonAwardState
+ )
+ return DumpString
+
+
+m_NAtagMCCrossRealmPKAwardState=tagMCCrossRealmPKAwardState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKAwardState.Cmd,m_NAtagMCCrossRealmPKAwardState.SubCmd))] = m_NAtagMCCrossRealmPKAwardState
+
+
+#------------------------------------------------------
+# C1 01 跨服PK玩家信息 #tagMCCrossRealmPKPlayerInfo
+
+class tagMCCrossRealmPKPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Score", c_int), # 当前积分
+ ("DanLV", c_ubyte), # 当前段位
+ ("PKCount", c_ushort), # PK次数
+ ("WinCount", c_ushort), # 胜利次数
+ ("CWinCount", c_ushort), # 连胜次数
+ ("DayPKCount", c_ubyte), # 当日已PK次数
+ ("DayWinCount", c_ubyte), # 当日已胜利次数
+ ("DayBuyCount", c_ubyte), # 当日已购买次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x01
+ 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 = 0xC1
+ self.SubCmd = 0x01
+ self.Score = 0
+ self.DanLV = 0
+ self.PKCount = 0
+ self.WinCount = 0
+ self.CWinCount = 0
+ self.DayPKCount = 0
+ self.DayWinCount = 0
+ self.DayBuyCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossRealmPKPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 01 跨服PK玩家信息 //tagMCCrossRealmPKPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ Score:%d,
+ DanLV:%d,
+ PKCount:%d,
+ WinCount:%d,
+ CWinCount:%d,
+ DayPKCount:%d,
+ DayWinCount:%d,
+ DayBuyCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Score,
+ self.DanLV,
+ self.PKCount,
+ self.WinCount,
+ self.CWinCount,
+ self.DayPKCount,
+ self.DayWinCount,
+ self.DayBuyCount
+ )
+ return DumpString
+
+
+m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
+
+
+#------------------------------------------------------
#D2 01 跨服赛报名(上传数据)状态 #tagMergeWarRegisterState
class tagMergeWarRegisterState(Structure):
--
Gitblit v1.8.0