From e6062b42c1191e9ab95e000a38276634eff0e1f1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 27 九月 2023 02:57:09 +0800
Subject: [PATCH] 9949 【BT0.1】【主干】天星塔修改(全服奖励修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py |  298 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 283 insertions(+), 15 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 4731772..7ca9139 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -4883,6 +4883,215 @@
 
 
 #------------------------------------------------------
+# A9 AD 通知天星塔全服奖励通关玩家信息 #tagGCSkyTowerPassPlayerInfo
+
+class  tagGCSkyTowerPassPlayer(Structure):
+    PlayerID = 0    #(DWORD PlayerID)
+    PlayerName = ""    #(char PlayerName[33])
+    Job = 0    #(BYTE Job)
+    LV = 0    #(WORD LV)//等级
+    RealmLV = 0    #(WORD RealmLV)//境界
+    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.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.PlayerID = 0
+        self.PlayerName = ""
+        self.Job = 0
+        self.LV = 0
+        self.RealmLV = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 33
+        length += 1
+        length += 2
+        length += 2
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteWORD(data, self.RealmLV)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                PlayerID:%d,
+                                PlayerName:%s,
+                                Job:%d,
+                                LV:%d,
+                                RealmLV:%d
+                                '''\
+                                %(
+                                self.PlayerID,
+                                self.PlayerName,
+                                self.Job,
+                                self.LV,
+                                self.RealmLV
+                                )
+        return DumpString
+
+
+class  tagGCSkyTowerPassFloor(Structure):
+    FloorID = 0    #(DWORD FloorID)// 层ID
+    PassPlayerCount = 0    #(BYTE PassPlayerCount)// 通关记录玩家数
+    PassPlayerIDList = list()    #(vector<DWORD> PassPlayerIDList)// 通关记录玩家ID列表 [第1个通过玩家ID, 第2个, ...]
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.FloorID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PassPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PassPlayerCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.PassPlayerIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.FloorID = 0
+        self.PassPlayerCount = 0
+        self.PassPlayerIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 1
+        length += 4 * self.PassPlayerCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.FloorID)
+        data = CommFunc.WriteBYTE(data, self.PassPlayerCount)
+        for i in range(self.PassPlayerCount):
+            data = CommFunc.WriteDWORD(data, self.PassPlayerIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                FloorID:%d,
+                                PassPlayerCount:%d,
+                                PassPlayerIDList:%s
+                                '''\
+                                %(
+                                self.FloorID,
+                                self.PassPlayerCount,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagGCSkyTowerPassPlayerInfo(Structure):
+    Head = tagHead()
+    FloorCount = 0    #(WORD FloorCount)
+    PassFloorList = list()    #(vector<tagGCSkyTowerPassFloor> PassFloorList)// 通关塔层信息列表
+    PlayerCount = 0    #(WORD PlayerCount)
+    PassPlayerList = list()    #(vector<tagGCSkyTowerPassPlayer> PassPlayerList)// 通关玩家信息列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xAD
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.FloorCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.FloorCount):
+            temPassFloorList = tagGCSkyTowerPassFloor()
+            _pos = temPassFloorList.ReadData(_lpData, _pos)
+            self.PassFloorList.append(temPassFloorList)
+        self.PlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.PlayerCount):
+            temPassPlayerList = tagGCSkyTowerPassPlayer()
+            _pos = temPassPlayerList.ReadData(_lpData, _pos)
+            self.PassPlayerList.append(temPassPlayerList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xAD
+        self.FloorCount = 0
+        self.PassFloorList = list()
+        self.PlayerCount = 0
+        self.PassPlayerList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        for i in range(self.FloorCount):
+            length += self.PassFloorList[i].GetLength()
+        length += 2
+        for i in range(self.PlayerCount):
+            length += self.PassPlayerList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.FloorCount)
+        for i in range(self.FloorCount):
+            data = CommFunc.WriteString(data, self.PassFloorList[i].GetLength(), self.PassFloorList[i].GetBuffer())
+        data = CommFunc.WriteWORD(data, self.PlayerCount)
+        for i in range(self.PlayerCount):
+            data = CommFunc.WriteString(data, self.PassPlayerList[i].GetLength(), self.PassPlayerList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FloorCount:%d,
+                                PassFloorList:%s,
+                                PlayerCount:%d,
+                                PassPlayerList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FloorCount,
+                                "...",
+                                self.PlayerCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCSkyTowerPassPlayerInfo=tagGCSkyTowerPassPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSkyTowerPassPlayerInfo.Head.Cmd,m_NAtagGCSkyTowerPassPlayerInfo.Head.SubCmd))] = m_NAtagGCSkyTowerPassPlayerInfo
+
+
+#------------------------------------------------------
 # A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
 
 class  tagGCStoreServerBuyCnt(Structure):
@@ -43397,19 +43606,15 @@
 #------------------------------------------------------
 # B2 13 天星塔通关层数 #tagMCSkyTowerInfo
 
-class  tagMCSkyTowerInfo(Structure):
+class  tagMCSkyTowerServerReward(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Floor", c_int),    # 已通关层
-                  ("ServerRewardRecord", c_int),    #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取
+                  ("Floor", c_int),    # 全服奖励层ID
+                  ("ServerRewardRecord", c_int),    #该层全服领奖记录,按所需人数作为二进制位进行位运算判断是否已领取
                   ]
 
     def __init__(self):
         self.Clear()
-        self.Cmd = 0xB2
-        self.SubCmd = 0x13
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -43418,36 +43623,99 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.Cmd = 0xB2
-        self.SubCmd = 0x13
         self.Floor = 0
         self.ServerRewardRecord = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCSkyTowerInfo)
+        return sizeof(tagMCSkyTowerServerReward)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
         DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
                                 Floor:%d,
                                 ServerRewardRecord:%d
                                 '''\
                                 %(
-                                self.Cmd,
-                                self.SubCmd,
                                 self.Floor,
                                 self.ServerRewardRecord
                                 )
         return DumpString
 
 
+class  tagMCSkyTowerInfo(Structure):
+    Head = tagHead()
+    Floor = 0    #(DWORD Floor)// 已通关层
+    ServerRewardCount = 0    #(WORD ServerRewardCount)
+    ServerRewardList = list()    #(vector<tagMCSkyTowerServerReward> ServerRewardList)// 全服奖励领取记录列表,下发的层记录替换更新即可,领奖记录没有变化时服务端不会下发
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x13
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Floor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerRewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.ServerRewardCount):
+            temServerRewardList = tagMCSkyTowerServerReward()
+            _pos = temServerRewardList.ReadData(_lpData, _pos)
+            self.ServerRewardList.append(temServerRewardList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x13
+        self.Floor = 0
+        self.ServerRewardCount = 0
+        self.ServerRewardList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 2
+        for i in range(self.ServerRewardCount):
+            length += self.ServerRewardList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.Floor)
+        data = CommFunc.WriteWORD(data, self.ServerRewardCount)
+        for i in range(self.ServerRewardCount):
+            data = CommFunc.WriteString(data, self.ServerRewardList[i].GetLength(), self.ServerRewardList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Floor:%d,
+                                ServerRewardCount:%d,
+                                ServerRewardList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Floor,
+                                self.ServerRewardCount,
+                                "..."
+                                )
+        return DumpString
+
+
 m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Head.Cmd,m_NAtagMCSkyTowerInfo.Head.SubCmd))] = m_NAtagMCSkyTowerInfo
 
 
 #------------------------------------------------------

--
Gitblit v1.8.0