From a663539981db072298974deba2578a4138f533d0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 04 九月 2024 16:57:02 +0800
Subject: [PATCH] 10249 【越南】【砍树】仙宫(新增仙宫系统;跨服boss历练、跨服仙匣秘境、跨服骑宠养成;跨服古宝养成、跨服排位赛个人排行榜结算支持晋升仙宫;)

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py |  539 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 539 insertions(+), 0 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index af3af48..931eced 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -5778,6 +5778,356 @@
 
 
 #------------------------------------------------------
+# A9 27 仙宫新晋玩家信息 #tagGCXiangongNewPlayerInfo
+
+class  tagGCXiangongNewPlayer(Structure):
+    AddTime = 0    #(DWORD AddTime)// 新晋时间戳
+    ServerID = 0    #(DWORD ServerID)
+    PlayerID = 0    #(DWORD PlayerID)
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)// 玩家名,size = NameLen
+    LV = 0    #(WORD LV)// 玩家等级
+    Job = 0    #(BYTE Job)// 玩家职业
+    RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    EquipShowSwitch = 0    #(DWORD EquipShowSwitch)
+    EquipShowIDCount = 0    #(BYTE EquipShowIDCount)
+    EquipShowID = list()    #(vector<DWORD> EquipShowID)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.EquipShowIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.EquipShowIDCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.EquipShowID.append(value)
+        return _pos
+
+    def Clear(self):
+        self.AddTime = 0
+        self.ServerID = 0
+        self.PlayerID = 0
+        self.NameLen = 0
+        self.Name = ""
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        self.EquipShowSwitch = 0
+        self.EquipShowIDCount = 0
+        self.EquipShowID = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.Name)
+        length += 2
+        length += 1
+        length += 2
+        length += 4
+        length += 1
+        length += 4 * self.EquipShowIDCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.AddTime)
+        data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
+        data = CommFunc.WriteBYTE(data, self.EquipShowIDCount)
+        for i in range(self.EquipShowIDCount):
+            data = CommFunc.WriteDWORD(data, self.EquipShowID[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                AddTime:%d,
+                                ServerID:%d,
+                                PlayerID:%d,
+                                NameLen:%d,
+                                Name:%s,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d,
+                                EquipShowSwitch:%d,
+                                EquipShowIDCount:%d,
+                                EquipShowID:%s
+                                '''\
+                                %(
+                                self.AddTime,
+                                self.ServerID,
+                                self.PlayerID,
+                                self.NameLen,
+                                self.Name,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV,
+                                self.EquipShowSwitch,
+                                self.EquipShowIDCount,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagGCXiangongNewPlayerInfo(Structure):
+    Head = tagHead()
+    XiangongID = 0    #(WORD XiangongID)// 仙宫ID
+    NewPlayerCount = 0    #(BYTE NewPlayerCount)
+    NewPlayerList = list()    #(vector<tagGCXiangongNewPlayer> NewPlayerList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x27
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.NewPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.NewPlayerCount):
+            temNewPlayerList = tagGCXiangongNewPlayer()
+            _pos = temNewPlayerList.ReadData(_lpData, _pos)
+            self.NewPlayerList.append(temNewPlayerList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x27
+        self.XiangongID = 0
+        self.NewPlayerCount = 0
+        self.NewPlayerList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        length += 1
+        for i in range(self.NewPlayerCount):
+            length += self.NewPlayerList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.XiangongID)
+        data = CommFunc.WriteBYTE(data, self.NewPlayerCount)
+        for i in range(self.NewPlayerCount):
+            data = CommFunc.WriteString(data, self.NewPlayerList[i].GetLength(), self.NewPlayerList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                XiangongID:%d,
+                                NewPlayerCount:%d,
+                                NewPlayerList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.XiangongID,
+                                self.NewPlayerCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCXiangongNewPlayerInfo=tagGCXiangongNewPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongNewPlayerInfo.Head.Cmd,m_NAtagGCXiangongNewPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongNewPlayerInfo
+
+
+#------------------------------------------------------
+# A9 28 仙宫仙名录玩家信息 #tagGCXiangongRecPlayerInfo
+
+class  tagGCXiangongRecPlayer(Structure):
+    AddTime = 0    #(DWORD AddTime)// 新晋时间戳
+    ServerID = 0    #(DWORD ServerID)
+    PlayerID = 0    #(DWORD PlayerID)
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)// 玩家名,size = NameLen
+    LV = 0    #(WORD LV)// 玩家等级
+    Job = 0    #(BYTE Job)// 玩家职业
+    RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.AddTime = 0
+        self.ServerID = 0
+        self.PlayerID = 0
+        self.NameLen = 0
+        self.Name = ""
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.Name)
+        length += 2
+        length += 1
+        length += 2
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.AddTime)
+        data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.RealmLV)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                AddTime:%d,
+                                ServerID:%d,
+                                PlayerID:%d,
+                                NameLen:%d,
+                                Name:%s,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d
+                                '''\
+                                %(
+                                self.AddTime,
+                                self.ServerID,
+                                self.PlayerID,
+                                self.NameLen,
+                                self.Name,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV
+                                )
+        return DumpString
+
+
+class  tagGCXiangongRecPlayerInfo(Structure):
+    Head = tagHead()
+    XiangongID = 0    #(WORD XiangongID)// 仙宫ID
+    RecPlayerCount = 0    #(BYTE RecPlayerCount)
+    RecPlayerList = list()    #(vector<tagGCXiangongRecPlayer> RecPlayerList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x28
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RecPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.RecPlayerCount):
+            temRecPlayerList = tagGCXiangongRecPlayer()
+            _pos = temRecPlayerList.ReadData(_lpData, _pos)
+            self.RecPlayerList.append(temRecPlayerList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x28
+        self.XiangongID = 0
+        self.RecPlayerCount = 0
+        self.RecPlayerList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        length += 1
+        for i in range(self.RecPlayerCount):
+            length += self.RecPlayerList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.XiangongID)
+        data = CommFunc.WriteBYTE(data, self.RecPlayerCount)
+        for i in range(self.RecPlayerCount):
+            data = CommFunc.WriteString(data, self.RecPlayerList[i].GetLength(), self.RecPlayerList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                XiangongID:%d,
+                                RecPlayerCount:%d,
+                                RecPlayerList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.XiangongID,
+                                self.RecPlayerCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCXiangongRecPlayerInfo=tagGCXiangongRecPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongRecPlayerInfo.Head.Cmd,m_NAtagGCXiangongRecPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongRecPlayerInfo
+
+
+#------------------------------------------------------
 # AC 10 仙盟抢Boss所有Boss伤血进度信息 #tagGCAllFamilyBossHurtInfoList
 
 class  tagGCFamilyBossHurtInfo(Structure):
@@ -50489,6 +50839,80 @@
 
 
 #------------------------------------------------------
+# B1 15 天道树信息 #tagMCTiandaoTreeInfo
+
+class  tagMCTiandaoTreeInfo(Structure):
+    Head = tagHead()
+    Qiyun = 0    #(DWORD Qiyun)// 当前气运值
+    AwardCount = 0    #(BYTE AwardCount)// 天道果领取记录值个数
+    AwardStateList = list()    #(vector<DWORD> AwardStateList)// 天道果领取记录值列表,按奖励索引位二进制记录是否已领取,一个值可存31位,如值1存0~30,值2存31~61,...
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x15
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Qiyun,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.AwardCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.AwardStateList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x15
+        self.Qiyun = 0
+        self.AwardCount = 0
+        self.AwardStateList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        length += 4 * self.AwardCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.Qiyun)
+        data = CommFunc.WriteBYTE(data, self.AwardCount)
+        for i in range(self.AwardCount):
+            data = CommFunc.WriteDWORD(data, self.AwardStateList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Qiyun:%d,
+                                AwardCount:%d,
+                                AwardStateList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Qiyun,
+                                self.AwardCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCTiandaoTreeInfo=tagMCTiandaoTreeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTiandaoTreeInfo.Head.Cmd,m_NAtagMCTiandaoTreeInfo.Head.SubCmd))] = m_NAtagMCTiandaoTreeInfo
+
+
+#------------------------------------------------------
 # B1 12 培养功能境界信息 #tagMCTrainRealmLVInfo
 
 class  tagMCTrainRealmLV(Structure):
@@ -50657,6 +51081,121 @@
 
 
 #------------------------------------------------------
+# B1 14 仙宫信息 #tagMCXiangongInfo
+
+class  tagMCXiangong(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("XiangongID", c_ushort),    # 仙宫ID
+                  ("LikeStateToday", c_ubyte),    # 今日是否已点赞
+                  ]
+
+    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.XiangongID = 0
+        self.LikeStateToday = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCXiangong)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 14 仙宫信息 //tagMCXiangongInfo:
+                                XiangongID:%d,
+                                LikeStateToday:%d
+                                '''\
+                                %(
+                                self.XiangongID,
+                                self.LikeStateToday
+                                )
+        return DumpString
+
+
+class  tagMCXiangongInfo(Structure):
+    Head = tagHead()
+    LikeStateToday = 0    #(BYTE LikeStateToday)// 今日是否已点赞,指仙宫的外层点赞,非某个指定仙宫
+    XiangongCount = 0    #(BYTE XiangongCount)
+    XiangongList = list()    #(vector<tagMCXiangong> XiangongList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x14
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.LikeStateToday,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.XiangongCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.XiangongCount):
+            temXiangongList = tagMCXiangong()
+            _pos = temXiangongList.ReadData(_lpData, _pos)
+            self.XiangongList.append(temXiangongList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x14
+        self.LikeStateToday = 0
+        self.XiangongCount = 0
+        self.XiangongList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        for i in range(self.XiangongCount):
+            length += self.XiangongList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.LikeStateToday)
+        data = CommFunc.WriteBYTE(data, self.XiangongCount)
+        for i in range(self.XiangongCount):
+            data = CommFunc.WriteString(data, self.XiangongList[i].GetLength(), self.XiangongList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                LikeStateToday:%d,
+                                XiangongCount:%d,
+                                XiangongList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.LikeStateToday,
+                                self.XiangongCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCXiangongInfo=tagMCXiangongInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXiangongInfo.Head.Cmd,m_NAtagMCXiangongInfo.Head.SubCmd))] = m_NAtagMCXiangongInfo
+
+
+#------------------------------------------------------
 # B1 20 战令信息 #tagMCZhanlingInfo
 
 class  tagMCZhanling(Structure):

--
Gitblit v1.8.0