From d2350a9a6ec29bdd9fc2cb63cdc9e27b57bc9574 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 20 十月 2025 14:40:03 +0800
Subject: [PATCH] 232 【付费内容】历练秘笈-服务端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py |  278 ++++++++++++++++++++++++-------------------------------
 1 files changed, 122 insertions(+), 156 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 09fa5f6..6366384 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -8585,66 +8585,13 @@
 
 
 #------------------------------------------------------
-# A3 41  成就完成 #tagMCSuccessFinish
+# A3 42 成就领奖记录列表 #tagSCSuccessAwardRecordList
 
-class  tagMCSuccessFinish(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("SuccID", c_int),    #成就id
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x41
-        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 = 0x41
-        self.SuccID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCSuccessFinish)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 41  成就完成 //tagMCSuccessFinish:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                SuccID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.SuccID
-                                )
-        return DumpString
-
-
-m_NAtagMCSuccessFinish=tagMCSuccessFinish()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinish.Cmd,m_NAtagMCSuccessFinish.SubCmd))] = m_NAtagMCSuccessFinish
-
-
-#------------------------------------------------------
-#A3 42  成就完成领奖记录列表 #tagMCSuccessFinishAwardRecordList
-
-class  tagMCSuccessFinishAwardRecord(Structure):
+class  tagSCSuccessAwardRecord(Structure):
     _pack_ = 1
     _fields_ = [
                   ("RecordIndex", c_ushort),    #第几个记录值 每个key存31个succid   0-30为0, 31-61为1..
-                  ("Record", c_int),    #对应是否领取值
-                  ("PassportRecord", c_int),    #通行证奖励是否领取值
+                  ("Record", c_int),    #根据成就ID位判断是否已领取
                   ]
 
     def __init__(self):
@@ -8659,33 +8606,30 @@
     def Clear(self):
         self.RecordIndex = 0
         self.Record = 0
-        self.PassportRecord = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCSuccessFinishAwardRecord)
+        return sizeof(tagSCSuccessAwardRecord)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''//A3 42  成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
+        DumpString = '''// A3 42 成就领奖记录列表 //tagSCSuccessAwardRecordList:
                                 RecordIndex:%d,
-                                Record:%d,
-                                PassportRecord:%d
+                                Record:%d
                                 '''\
                                 %(
                                 self.RecordIndex,
-                                self.Record,
-                                self.PassportRecord
+                                self.Record
                                 )
         return DumpString
 
 
-class  tagMCSuccessFinishAwardRecordList(Structure):
+class  tagSCSuccessAwardRecordList(Structure):
     Head = tagHead()
     RecordCnt = 0    #(WORD RecordCnt)//记录个数
-    RecordList = list()    #(vector<tagMCSuccessFinishAwardRecord> RecordList)//记录列表
+    RecordList = list()    #(vector<tagSCSuccessAwardRecord> RecordList)//记录列表
     data = None
 
     def __init__(self):
@@ -8699,7 +8643,7 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
         for i in range(self.RecordCnt):
-            temRecordList = tagMCSuccessFinishAwardRecord()
+            temRecordList = tagSCSuccessAwardRecord()
             _pos = temRecordList.ReadData(_lpData, _pos)
             self.RecordList.append(temRecordList)
         return _pos
@@ -8744,18 +8688,18 @@
         return DumpString
 
 
-m_NAtagMCSuccessFinishAwardRecordList=tagMCSuccessFinishAwardRecordList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinishAwardRecordList.Head.Cmd,m_NAtagMCSuccessFinishAwardRecordList.Head.SubCmd))] = m_NAtagMCSuccessFinishAwardRecordList
+m_NAtagSCSuccessAwardRecordList=tagSCSuccessAwardRecordList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessAwardRecordList.Head.Cmd,m_NAtagSCSuccessAwardRecordList.Head.SubCmd))] = m_NAtagSCSuccessAwardRecordList
 
 
 #------------------------------------------------------
-# A3 40  成就信息列表 #tagMCSuccessInfoList
+# A3 40 成就信息列表 #tagSCSuccessInfoList
 
-class  tagMCSuccessInfo(Structure):
+class  tagSCSuccessInfo(Structure):
     SuccType = 0    #(WORD SuccType)//成就类型
-    Len = 0    #(WORD Len)//条件长度
-    Condition = ""    #(String Condition)//成就条件
-    CntValue = 0    #(DWORD CntValue)//当前完成进度值
+    CLen = 0    #(BYTE CLen)
+    Conds = list()    #(vector<DWORD> Conds)// 条件列表
+    CurValue = 0    #(DWORD CurValue)// 进度值,相同任务类型条件的进度值共享
     data = None
 
     def __init__(self):
@@ -8765,23 +8709,25 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         self.SuccType,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Condition,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
-        self.CntValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.CLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CLen):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.Conds.append(value)
+        self.CurValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
         self.SuccType = 0
-        self.Len = 0
-        self.Condition = ""
-        self.CntValue = 0
+        self.CLen = 0
+        self.Conds = list()
+        self.CurValue = 0
         return
 
     def GetLength(self):
         length = 0
         length += 2
-        length += 2
-        length += len(self.Condition)
+        length += 1
+        length += 4 * self.CLen
         length += 4
 
         return length
@@ -8789,31 +8735,32 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteWORD(data, self.SuccType)
-        data = CommFunc.WriteWORD(data, self.Len)
-        data = CommFunc.WriteString(data, self.Len, self.Condition)
-        data = CommFunc.WriteDWORD(data, self.CntValue)
+        data = CommFunc.WriteBYTE(data, self.CLen)
+        for i in range(self.CLen):
+            data = CommFunc.WriteDWORD(data, self.Conds[i])
+        data = CommFunc.WriteDWORD(data, self.CurValue)
         return data
 
     def OutputString(self):
         DumpString = '''
                                 SuccType:%d,
-                                Len:%d,
-                                Condition:%s,
-                                CntValue:%d
+                                CLen:%d,
+                                Conds:%s,
+                                CurValue:%d
                                 '''\
                                 %(
                                 self.SuccType,
-                                self.Len,
-                                self.Condition,
-                                self.CntValue
+                                self.CLen,
+                                "...",
+                                self.CurValue
                                 )
         return DumpString
 
 
-class  tagMCSuccessInfoList(Structure):
+class  tagSCSuccessInfoList(Structure):
     Head = tagHead()
-    count = 0    #(WORD count)//信息个数
-    SuccessInfoList = list()    #(vector<tagMCSuccessInfo> SuccessInfoList)
+    Count = 0    #(WORD Count)//信息个数
+    SuccessInfoList = list()    #(vector<tagSCSuccessInfo> SuccessInfoList)
     data = None
 
     def __init__(self):
@@ -8825,9 +8772,9 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.count):
-            temSuccessInfoList = tagMCSuccessInfo()
+        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.Count):
+            temSuccessInfoList = tagSCSuccessInfo()
             _pos = temSuccessInfoList.ReadData(_lpData, _pos)
             self.SuccessInfoList.append(temSuccessInfoList)
         return _pos
@@ -8837,7 +8784,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xA3
         self.Head.SubCmd = 0x40
-        self.count = 0
+        self.Count = 0
         self.SuccessInfoList = list()
         return
 
@@ -8845,7 +8792,7 @@
         length = 0
         length += self.Head.GetLength()
         length += 2
-        for i in range(self.count):
+        for i in range(self.Count):
             length += self.SuccessInfoList[i].GetLength()
 
         return length
@@ -8853,79 +8800,27 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.count)
-        for i in range(self.count):
+        data = CommFunc.WriteWORD(data, self.Count)
+        for i in range(self.Count):
             data = CommFunc.WriteString(data, self.SuccessInfoList[i].GetLength(), self.SuccessInfoList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
-                                count:%d,
+                                Count:%d,
                                 SuccessInfoList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
-                                self.count,
+                                self.Count,
                                 "..."
                                 )
         return DumpString
 
 
-m_NAtagMCSuccessInfoList=tagMCSuccessInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessInfoList.Head.Cmd,m_NAtagMCSuccessInfoList.Head.SubCmd))] = m_NAtagMCSuccessInfoList
-
-
-#------------------------------------------------------
-# A3 43  成就积分信息 #tagMCSuccessScoreInfo
-
-class  tagMCSuccessScoreInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ScoreAwardState", c_int),    #成就积分领奖记录,按奖励索引位记录是否领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x43
-        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 = 0x43
-        self.ScoreAwardState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCSuccessScoreInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 43  成就积分信息 //tagMCSuccessScoreInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ScoreAwardState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ScoreAwardState
-                                )
-        return DumpString
-
-
-m_NAtagMCSuccessScoreInfo=tagMCSuccessScoreInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessScoreInfo.Cmd,m_NAtagMCSuccessScoreInfo.SubCmd))] = m_NAtagMCSuccessScoreInfo
+m_NAtagSCSuccessInfoList=tagSCSuccessInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessInfoList.Head.Cmd,m_NAtagSCSuccessInfoList.Head.SubCmd))] = m_NAtagSCSuccessInfoList
 
 
 #------------------------------------------------------
@@ -16752,6 +16647,7 @@
 class  tagSCArenaMatchInfo(Structure):
     PlayerID = 0    #(DWORD PlayerID)//目标玩家ID
     PlayerName = ""    #(char PlayerName[33])
+    LV = 0    #(WORD LV)// 玩家等级
     RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
     FightPower = 0    #(DWORD FightPower)//战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分
@@ -16768,6 +16664,7 @@
         self.Clear()
         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16779,6 +16676,7 @@
     def Clear(self):
         self.PlayerID = 0
         self.PlayerName = ""
+        self.LV = 0
         self.RealmLV = 0
         self.FightPower = 0
         self.FightPowerEx = 0
@@ -16792,6 +16690,7 @@
         length += 4
         length += 33
         length += 2
+        length += 2
         length += 4
         length += 4
         length += 4
@@ -16804,6 +16703,7 @@
         data = ''
         data = CommFunc.WriteDWORD(data, self.PlayerID)
         data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
@@ -16816,6 +16716,7 @@
         DumpString = '''
                                 PlayerID:%d,
                                 PlayerName:%s,
+                                LV:%d,
                                 RealmLV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
@@ -16826,6 +16727,7 @@
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
+                                self.LV,
                                 self.RealmLV,
                                 self.FightPower,
                                 self.FightPowerEx,
@@ -35520,6 +35422,70 @@
 
 
 #------------------------------------------------------
+# B1 28 历练秘笈信息 #tagSCLLMJInfo
+
+class  tagSCLLMJInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MJLV", c_ubyte),    # 秘笈等级,激活后从1开始
+                  ("Zhanchui", c_int),    # 秘笈累计消耗战锤
+                  ("ExpEx", c_int),    # 秘笈今日已额外获得经验
+                  ("DecomposeEx", c_int),    # 秘笈今日已额外获得分解货币
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB1
+        self.SubCmd = 0x28
+        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 = 0x28
+        self.MJLV = 0
+        self.Zhanchui = 0
+        self.ExpEx = 0
+        self.DecomposeEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCLLMJInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 28 历练秘笈信息 //tagSCLLMJInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MJLV:%d,
+                                Zhanchui:%d,
+                                ExpEx:%d,
+                                DecomposeEx:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MJLV,
+                                self.Zhanchui,
+                                self.ExpEx,
+                                self.DecomposeEx
+                                )
+        return DumpString
+
+
+m_NAtagSCLLMJInfo=tagSCLLMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLLMJInfo.Cmd,m_NAtagSCLLMJInfo.SubCmd))] = m_NAtagSCLLMJInfo
+
+
+#------------------------------------------------------
 # B1 19 形象信息 #tagSCModelInfo
 
 class  tagSCModel(Structure):

--
Gitblit v1.8.0