From 9b67e4335f655af8c8aef8aa1e7d41e509c50b76 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 12 九月 2025 17:38:35 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(反击改为使用普攻,去除通用反击技能设定;武将特长支持;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 1048 ++++++++++++++-------------------------------------------
 1 files changed, 269 insertions(+), 779 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 62b85f1..fd93a81 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -193,6 +193,197 @@
 
 
 #------------------------------------------------------
+# A0 09 通用记录信息 #tagSCGameRecInfo
+
+class  tagSCGameRec(Structure):
+    Time = 0    #(DWORD Time)//时间
+    Value1 = 0    #(DWORD Value1)//值1
+    Value2 = 0    #(DWORD Value2)//值2
+    Value3 = 0    #(DWORD Value3)//值3
+    Value4 = 0    #(DWORD Value4)//值4
+    Value5 = 0    #(DWORD Value5)//值5
+    Value6 = 0    #(DWORD Value6)//值6
+    Value7 = 0    #(DWORD Value7)//值7
+    Value8 = 0    #(DWORD Value8)//值8
+    UserDataLen = 0    #(WORD UserDataLen)//扩展数据长度
+    UserData = ""    #(String UserData)//扩展数据
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+        return _pos
+
+    def Clear(self):
+        self.Time = 0
+        self.Value1 = 0
+        self.Value2 = 0
+        self.Value3 = 0
+        self.Value4 = 0
+        self.Value5 = 0
+        self.Value6 = 0
+        self.Value7 = 0
+        self.Value8 = 0
+        self.UserDataLen = 0
+        self.UserData = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 2
+        length += len(self.UserData)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.Time)
+        data = CommFunc.WriteDWORD(data, self.Value1)
+        data = CommFunc.WriteDWORD(data, self.Value2)
+        data = CommFunc.WriteDWORD(data, self.Value3)
+        data = CommFunc.WriteDWORD(data, self.Value4)
+        data = CommFunc.WriteDWORD(data, self.Value5)
+        data = CommFunc.WriteDWORD(data, self.Value6)
+        data = CommFunc.WriteDWORD(data, self.Value7)
+        data = CommFunc.WriteDWORD(data, self.Value8)
+        data = CommFunc.WriteWORD(data, self.UserDataLen)
+        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Time:%d,
+                                Value1:%d,
+                                Value2:%d,
+                                Value3:%d,
+                                Value4:%d,
+                                Value5:%d,
+                                Value6:%d,
+                                Value7:%d,
+                                Value8:%d,
+                                UserDataLen:%d,
+                                UserData:%s
+                                '''\
+                                %(
+                                self.Time,
+                                self.Value1,
+                                self.Value2,
+                                self.Value3,
+                                self.Value4,
+                                self.Value5,
+                                self.Value6,
+                                self.Value7,
+                                self.Value8,
+                                self.UserDataLen,
+                                self.UserData
+                                )
+        return DumpString
+
+
+class  tagSCGameRecInfo(Structure):
+    Head = tagHead()
+    RecType = 0    #(WORD RecType)//记录类型
+    RecID = 0    #(DWORD RecID)//自定义记录ID
+    Count = 0    #(WORD Count)//数量
+    RecList = list()    #(vector<tagSCGameRec> RecList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA0
+        self.Head.SubCmd = 0x09
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.RecType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RecID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.Count):
+            temRecList = tagSCGameRec()
+            _pos = temRecList.ReadData(_lpData, _pos)
+            self.RecList.append(temRecList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA0
+        self.Head.SubCmd = 0x09
+        self.RecType = 0
+        self.RecID = 0
+        self.Count = 0
+        self.RecList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        length += 4
+        length += 2
+        for i in range(self.Count):
+            length += self.RecList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.RecType)
+        data = CommFunc.WriteDWORD(data, self.RecID)
+        data = CommFunc.WriteWORD(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.RecList[i].GetLength(), self.RecList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                RecType:%d,
+                                RecID:%d,
+                                Count:%d,
+                                RecList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.RecType,
+                                self.RecID,
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCGameRecInfo=tagSCGameRecInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCGameRecInfo.Head.Cmd,m_NAtagSCGameRecInfo.Head.SubCmd))] = m_NAtagSCGameRecInfo
+
+
+#------------------------------------------------------
 # A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
 
 class  tagGCFBLineInfo(Structure):
@@ -421,190 +612,6 @@
 
 m_NAtagOpenServerDay=tagOpenServerDay()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Cmd,m_NAtagOpenServerDay.SubCmd))] = m_NAtagOpenServerDay
-
-
-#------------------------------------------------------
-# A0 08 玩家记录信息 #tagGCPlayerRecInfo
-
-class  tagGCPlayerRec(Structure):
-    Time = 0    #(DWORD Time)//时间
-    Value1 = 0    #(DWORD Value1)//值1
-    Value2 = 0    #(DWORD Value2)//值2
-    Value3 = 0    #(DWORD Value3)//值3
-    Value4 = 0    #(DWORD Value4)//值4
-    Value5 = 0    #(DWORD Value5)//值5
-    Value6 = 0    #(DWORD Value6)//值6
-    Value7 = 0    #(DWORD Value7)//值7
-    Value8 = 0    #(DWORD Value8)//值8
-    UserDataLen = 0    #(WORD UserDataLen)//扩展数据长度
-    UserData = ""    #(String UserData)//扩展数据
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
-        return _pos
-
-    def Clear(self):
-        self.Time = 0
-        self.Value1 = 0
-        self.Value2 = 0
-        self.Value3 = 0
-        self.Value4 = 0
-        self.Value5 = 0
-        self.Value6 = 0
-        self.Value7 = 0
-        self.Value8 = 0
-        self.UserDataLen = 0
-        self.UserData = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 2
-        length += len(self.UserData)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.Time)
-        data = CommFunc.WriteDWORD(data, self.Value1)
-        data = CommFunc.WriteDWORD(data, self.Value2)
-        data = CommFunc.WriteDWORD(data, self.Value3)
-        data = CommFunc.WriteDWORD(data, self.Value4)
-        data = CommFunc.WriteDWORD(data, self.Value5)
-        data = CommFunc.WriteDWORD(data, self.Value6)
-        data = CommFunc.WriteDWORD(data, self.Value7)
-        data = CommFunc.WriteDWORD(data, self.Value8)
-        data = CommFunc.WriteWORD(data, self.UserDataLen)
-        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Time:%d,
-                                Value1:%d,
-                                Value2:%d,
-                                Value3:%d,
-                                Value4:%d,
-                                Value5:%d,
-                                Value6:%d,
-                                Value7:%d,
-                                Value8:%d,
-                                UserDataLen:%d,
-                                UserData:%s
-                                '''\
-                                %(
-                                self.Time,
-                                self.Value1,
-                                self.Value2,
-                                self.Value3,
-                                self.Value4,
-                                self.Value5,
-                                self.Value6,
-                                self.Value7,
-                                self.Value8,
-                                self.UserDataLen,
-                                self.UserData
-                                )
-        return DumpString
-
-
-class  tagGCPlayerRecInfo(Structure):
-    Head = tagHead()
-    Type = 0    #(BYTE Type)//类型
-    Count = 0    #(WORD Count)//数量
-    PlayerRecList = list()    #(vector<tagGCPlayerRec> PlayerRecList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA0
-        self.Head.SubCmd = 0x08
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Count):
-            temPlayerRecList = tagGCPlayerRec()
-            _pos = temPlayerRecList.ReadData(_lpData, _pos)
-            self.PlayerRecList.append(temPlayerRecList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA0
-        self.Head.SubCmd = 0x08
-        self.Type = 0
-        self.Count = 0
-        self.PlayerRecList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 2
-        for i in range(self.Count):
-            length += self.PlayerRecList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Type)
-        data = CommFunc.WriteWORD(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.PlayerRecList[i].GetLength(), self.PlayerRecList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Type:%d,
-                                Count:%d,
-                                PlayerRecList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Type,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCPlayerRecInfo=tagGCPlayerRecInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerRecInfo.Head.Cmd,m_NAtagGCPlayerRecInfo.Head.SubCmd))] = m_NAtagGCPlayerRecInfo
 
 
 #------------------------------------------------------
@@ -923,197 +930,6 @@
 
 m_NAtagServerGmMailInfo=tagServerGmMailInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagServerGmMailInfo.Head.Cmd,m_NAtagServerGmMailInfo.Head.SubCmd))] = m_NAtagServerGmMailInfo
-
-
-#------------------------------------------------------
-#A0 03 玩家信息通用记录 #tagUniversalGameRecInfo
-
-class  tagUniversalGameRec(Structure):
-    Time = 0    #(DWORD Time)//时间
-    StrValue1Len = 0    #(WORD StrValue1Len)//字符串1长度
-    StrValue1 = ""    #(String StrValue1)
-    StrValue2Len = 0    #(WORD StrValue2Len)//字符串2长度
-    StrValue2 = ""    #(String StrValue2)
-    StrValue3Len = 0    #(WORD StrValue3Len)//字符串3长度
-    StrValue3 = ""    #(String StrValue3)
-    Value1 = 0    #(DWORD Value1)//数值1
-    Value2 = 0    #(DWORD Value2)//数值1
-    Value3 = 0    #(DWORD Value3)//数值1
-    Value4 = 0    #(DWORD Value4)//数值1
-    Value5 = 0    #(DWORD Value5)//数值1
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.StrValue1Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.StrValue1,_pos = CommFunc.ReadString(_lpData, _pos,self.StrValue1Len)
-        self.StrValue2Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.StrValue2,_pos = CommFunc.ReadString(_lpData, _pos,self.StrValue2Len)
-        self.StrValue3Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.StrValue3,_pos = CommFunc.ReadString(_lpData, _pos,self.StrValue3Len)
-        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Time = 0
-        self.StrValue1Len = 0
-        self.StrValue1 = ""
-        self.StrValue2Len = 0
-        self.StrValue2 = ""
-        self.StrValue3Len = 0
-        self.StrValue3 = ""
-        self.Value1 = 0
-        self.Value2 = 0
-        self.Value3 = 0
-        self.Value4 = 0
-        self.Value5 = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 2
-        length += len(self.StrValue1)
-        length += 2
-        length += len(self.StrValue2)
-        length += 2
-        length += len(self.StrValue3)
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.Time)
-        data = CommFunc.WriteWORD(data, self.StrValue1Len)
-        data = CommFunc.WriteString(data, self.StrValue1Len, self.StrValue1)
-        data = CommFunc.WriteWORD(data, self.StrValue2Len)
-        data = CommFunc.WriteString(data, self.StrValue2Len, self.StrValue2)
-        data = CommFunc.WriteWORD(data, self.StrValue3Len)
-        data = CommFunc.WriteString(data, self.StrValue3Len, self.StrValue3)
-        data = CommFunc.WriteDWORD(data, self.Value1)
-        data = CommFunc.WriteDWORD(data, self.Value2)
-        data = CommFunc.WriteDWORD(data, self.Value3)
-        data = CommFunc.WriteDWORD(data, self.Value4)
-        data = CommFunc.WriteDWORD(data, self.Value5)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Time:%d,
-                                StrValue1Len:%d,
-                                StrValue1:%s,
-                                StrValue2Len:%d,
-                                StrValue2:%s,
-                                StrValue3Len:%d,
-                                StrValue3:%s,
-                                Value1:%d,
-                                Value2:%d,
-                                Value3:%d,
-                                Value4:%d,
-                                Value5:%d
-                                '''\
-                                %(
-                                self.Time,
-                                self.StrValue1Len,
-                                self.StrValue1,
-                                self.StrValue2Len,
-                                self.StrValue2,
-                                self.StrValue3Len,
-                                self.StrValue3,
-                                self.Value1,
-                                self.Value2,
-                                self.Value3,
-                                self.Value4,
-                                self.Value5
-                                )
-        return DumpString
-
-
-class  tagUniversalGameRecInfo(Structure):
-    Head = tagHead()
-    Type = 0    #(BYTE Type)//类型
-    Count = 0    #(WORD Count)//数量
-    UniversalGameRec = list()    #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count	
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA0
-        self.Head.SubCmd = 0x03
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Count):
-            temUniversalGameRec = tagUniversalGameRec()
-            _pos = temUniversalGameRec.ReadData(_lpData, _pos)
-            self.UniversalGameRec.append(temUniversalGameRec)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA0
-        self.Head.SubCmd = 0x03
-        self.Type = 0
-        self.Count = 0
-        self.UniversalGameRec = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 2
-        for i in range(self.Count):
-            length += self.UniversalGameRec[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Type)
-        data = CommFunc.WriteWORD(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.UniversalGameRec[i].GetLength(), self.UniversalGameRec[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Type:%d,
-                                Count:%d,
-                                UniversalGameRec:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Type,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagUniversalGameRecInfo=tagUniversalGameRecInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUniversalGameRecInfo.Head.Cmd,m_NAtagUniversalGameRecInfo.Head.SubCmd))] = m_NAtagUniversalGameRecInfo
 
 
 #------------------------------------------------------
@@ -3822,74 +3638,6 @@
 
 m_NAtagMCAllEquipAttrActiveInfo=tagMCAllEquipAttrActiveInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllEquipAttrActiveInfo.Head.Cmd,m_NAtagMCAllEquipAttrActiveInfo.Head.SubCmd))] = m_NAtagMCAllEquipAttrActiveInfo
-
-
-#------------------------------------------------------
-# A3 C3 竞技场玩家信息 #tagMCArenaPlayerInfo
-
-class  tagMCArenaPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("IsReset", c_ubyte),    #是否是重置的
-                  ("Score", c_int),    #当前积分
-                  ("BattleCountToday", c_ubyte),    #今日已挑战次数
-                  ("MatchRefreshCount", c_ubyte),    #当前已刷新匹配列表次数,每次挑战后会重置
-                  ("ItemAddBattleCountToday", c_ubyte),    #今日已使用物品增加的挑战次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0xC3
-        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 = 0xC3
-        self.IsReset = 0
-        self.Score = 0
-        self.BattleCountToday = 0
-        self.MatchRefreshCount = 0
-        self.ItemAddBattleCountToday = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCArenaPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 C3 竞技场玩家信息 //tagMCArenaPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                IsReset:%d,
-                                Score:%d,
-                                BattleCountToday:%d,
-                                MatchRefreshCount:%d,
-                                ItemAddBattleCountToday:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.IsReset,
-                                self.Score,
-                                self.BattleCountToday,
-                                self.MatchRefreshCount,
-                                self.ItemAddBattleCountToday
-                                )
-        return DumpString
-
-
-m_NAtagMCArenaPlayerInfo=tagMCArenaPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCArenaPlayerInfo.Cmd,m_NAtagMCArenaPlayerInfo.SubCmd))] = m_NAtagMCArenaPlayerInfo
 
 
 #------------------------------------------------------
@@ -17435,6 +17183,7 @@
     RealmLV = 0    #(BYTE RealmLV)
     Face = 0    #(DWORD Face)
     FacePic = 0    #(DWORD FacePic)
+    ModelMark = 0    #(DWORD ModelMark)//变形模型mark
     TitleID = 0    #(DWORD TitleID)//佩戴的称号
     ServerID = 0    #(DWORD ServerID)
     FightPower = 0    #(DWORD FightPower)
@@ -17462,6 +17211,7 @@
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -17485,6 +17235,7 @@
         self.RealmLV = 0
         self.Face = 0
         self.FacePic = 0
+        self.ModelMark = 0
         self.TitleID = 0
         self.ServerID = 0
         self.FightPower = 0
@@ -17511,6 +17262,7 @@
         length += 4
         length += 4
         length += 4
+        length += 4
         length += 33
         length += 4
         length += 4
@@ -17528,6 +17280,7 @@
         data = CommFunc.WriteBYTE(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.Face)
         data = CommFunc.WriteDWORD(data, self.FacePic)
+        data = CommFunc.WriteDWORD(data, self.ModelMark)
         data = CommFunc.WriteDWORD(data, self.TitleID)
         data = CommFunc.WriteDWORD(data, self.ServerID)
         data = CommFunc.WriteDWORD(data, self.FightPower)
@@ -17549,6 +17302,7 @@
                                 RealmLV:%d,
                                 Face:%d,
                                 FacePic:%d,
+                                ModelMark:%d,
                                 TitleID:%d,
                                 ServerID:%d,
                                 FightPower:%d,
@@ -17568,6 +17322,7 @@
                                 self.RealmLV,
                                 self.Face,
                                 self.FacePic,
+                                self.ModelMark,
                                 self.TitleID,
                                 self.ServerID,
                                 self.FightPower,
@@ -18992,127 +18747,14 @@
 
 
 #------------------------------------------------------
-# A9 26 竞技场对战玩家最新信息 #tagGCArenaBattlePlayerInfo
+# A9 22 演武场匹配玩家列表 #tagSCArenaMatchList
 
-class  tagGCArenaBattlePlayerInfo(Structure):
-    Head = tagHead()
+class  tagSCArenaMatchInfo(Structure):
     PlayerID = 0    #(DWORD PlayerID)//目标玩家ID
     PlayerName = ""    #(char PlayerName[33])
-    Job = 0    #(BYTE Job)
-    LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
-    FightPower = 0    #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
-    FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
-    Score = 0    #(DWORD Score)//积分
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x26
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        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)
-        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x26
-        self.PlayerID = 0
-        self.PlayerName = ""
-        self.Job = 0
-        self.LV = 0
-        self.RealmLV = 0
-        self.FightPower = 0
-        self.FightPowerEx = 0
-        self.Score = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 33
-        length += 1
-        length += 2
-        length += 2
-        length += 4
-        length += 4
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        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)
-        data = CommFunc.WriteDWORD(data, self.FightPower)
-        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
-        data = CommFunc.WriteDWORD(data, self.Score)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                PlayerID:%d,
-                                PlayerName:%s,
-                                Job:%d,
-                                LV:%d,
-                                RealmLV:%d,
-                                FightPower:%d,
-                                FightPowerEx:%d,
-                                Score:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.PlayerID,
-                                self.PlayerName,
-                                self.Job,
-                                self.LV,
-                                self.RealmLV,
-                                self.FightPower,
-                                self.FightPowerEx,
-                                self.Score
-                                )
-        return DumpString
-
-
-m_NAtagGCArenaBattlePlayerInfo=tagGCArenaBattlePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattlePlayerInfo.Head.Cmd,m_NAtagGCArenaBattlePlayerInfo.Head.SubCmd))] = m_NAtagGCArenaBattlePlayerInfo
-
-
-#------------------------------------------------------
-# A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList
-
-class  tagGCArenaBattleRecord(Structure):
-    PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
-    PlayerName = ""    #(char PlayerName[33])
-    Job = 0    #(BYTE Job)
-    LV = 0    #(WORD LV)//等级
-    RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
-    FightPower = 0    #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
-    FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
-    Score = 0    #(DWORD Score)//积分
-    AddScoreLen = 0    #(BYTE AddScoreLen)
-    AddScore = ""    #(String AddScore)//本次对战增加的积分,有正负
-    IsWin = 0    #(BYTE IsWin)//是否获胜
-    Time = 0    #(DWORD Time)//时间戳
+    FightPower = 0    #(DWORD FightPower)//战力求余亿部分
+    FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分
     Face = 0    #(DWORD Face)//基本脸型
     FacePic = 0    #(DWORD FacePic)//头像框
     data = None
@@ -19125,16 +18767,9 @@
         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)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen)
-        self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
@@ -19142,16 +18777,9 @@
     def Clear(self):
         self.PlayerID = 0
         self.PlayerName = ""
-        self.Job = 0
-        self.LV = 0
         self.RealmLV = 0
         self.FightPower = 0
         self.FightPowerEx = 0
-        self.Score = 0
-        self.AddScoreLen = 0
-        self.AddScore = ""
-        self.IsWin = 0
-        self.Time = 0
         self.Face = 0
         self.FacePic = 0
         return
@@ -19160,196 +18788,7 @@
         length = 0
         length += 4
         length += 33
-        length += 1
         length += 2
-        length += 2
-        length += 4
-        length += 4
-        length += 4
-        length += 1
-        length += len(self.AddScore)
-        length += 1
-        length += 4
-        length += 4
-        length += 4
-
-        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)
-        data = CommFunc.WriteDWORD(data, self.FightPower)
-        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
-        data = CommFunc.WriteDWORD(data, self.Score)
-        data = CommFunc.WriteBYTE(data, self.AddScoreLen)
-        data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore)
-        data = CommFunc.WriteBYTE(data, self.IsWin)
-        data = CommFunc.WriteDWORD(data, self.Time)
-        data = CommFunc.WriteDWORD(data, self.Face)
-        data = CommFunc.WriteDWORD(data, self.FacePic)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                PlayerID:%d,
-                                PlayerName:%s,
-                                Job:%d,
-                                LV:%d,
-                                RealmLV:%d,
-                                FightPower:%d,
-                                FightPowerEx:%d,
-                                Score:%d,
-                                AddScoreLen:%d,
-                                AddScore:%s,
-                                IsWin:%d,
-                                Time:%d,
-                                Face:%d,
-                                FacePic:%d
-                                '''\
-                                %(
-                                self.PlayerID,
-                                self.PlayerName,
-                                self.Job,
-                                self.LV,
-                                self.RealmLV,
-                                self.FightPower,
-                                self.FightPowerEx,
-                                self.Score,
-                                self.AddScoreLen,
-                                self.AddScore,
-                                self.IsWin,
-                                self.Time,
-                                self.Face,
-                                self.FacePic
-                                )
-        return DumpString
-
-
-class  tagGCArenaBattleRecordList(Structure):
-    Head = tagHead()
-    RecordCount = 0    #(BYTE RecordCount)
-    BattleRecordList = list()    #(vector<tagGCArenaBattleRecord> BattleRecordList)// 对战列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x23
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RecordCount):
-            temBattleRecordList = tagGCArenaBattleRecord()
-            _pos = temBattleRecordList.ReadData(_lpData, _pos)
-            self.BattleRecordList.append(temBattleRecordList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x23
-        self.RecordCount = 0
-        self.BattleRecordList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.RecordCount):
-            length += self.BattleRecordList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.RecordCount)
-        for i in range(self.RecordCount):
-            data = CommFunc.WriteString(data, self.BattleRecordList[i].GetLength(), self.BattleRecordList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RecordCount:%d,
-                                BattleRecordList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RecordCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCArenaBattleRecordList=tagGCArenaBattleRecordList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattleRecordList.Head.Cmd,m_NAtagGCArenaBattleRecordList.Head.SubCmd))] = m_NAtagGCArenaBattleRecordList
-
-
-#------------------------------------------------------
-# A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList
-
-class  tagGCArenaMatchInfo(Structure):
-    PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
-    PlayerName = ""    #(char PlayerName[33])
-    Job = 0    #(BYTE Job)
-    LV = 0    #(WORD LV)//等级
-    RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
-    FightPower = 0    #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
-    FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
-    Score = 0    #(DWORD Score)//积分
-    Face = 0    #(DWORD Face)//基本脸型
-    FacePic = 0    #(DWORD FacePic)//头像框
-    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)
-        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.PlayerID = 0
-        self.PlayerName = ""
-        self.Job = 0
-        self.LV = 0
-        self.RealmLV = 0
-        self.FightPower = 0
-        self.FightPowerEx = 0
-        self.Score = 0
-        self.Face = 0
-        self.FacePic = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 33
-        length += 1
-        length += 2
-        length += 2
-        length += 4
         length += 4
         length += 4
         length += 4
@@ -19361,12 +18800,9 @@
         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)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
-        data = CommFunc.WriteDWORD(data, self.Score)
         data = CommFunc.WriteDWORD(data, self.Face)
         data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
@@ -19375,34 +18811,28 @@
         DumpString = '''
                                 PlayerID:%d,
                                 PlayerName:%s,
-                                Job:%d,
-                                LV:%d,
                                 RealmLV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                Score:%d,
                                 Face:%d,
                                 FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
-                                self.Job,
-                                self.LV,
                                 self.RealmLV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.Score,
                                 self.Face,
                                 self.FacePic
                                 )
         return DumpString
 
 
-class  tagGCArenaMatchList(Structure):
+class  tagSCArenaMatchList(Structure):
     Head = tagHead()
     MatchCount = 0    #(BYTE MatchCount)
-    MatchList = list()    #(vector<tagGCArenaMatchInfo> MatchList)// 匹配列表
+    MatchList = list()    #(vector<tagSCArenaMatchInfo> MatchList)// 匹配列表,从高分到低分
     data = None
 
     def __init__(self):
@@ -19416,7 +18846,7 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.MatchCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.MatchCount):
-            temMatchList = tagGCArenaMatchInfo()
+            temMatchList = tagSCArenaMatchInfo()
             _pos = temMatchList.ReadData(_lpData, _pos)
             self.MatchList.append(temMatchList)
         return _pos
@@ -19461,8 +18891,60 @@
         return DumpString
 
 
-m_NAtagGCArenaMatchList=tagGCArenaMatchList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaMatchList.Head.Cmd,m_NAtagGCArenaMatchList.Head.SubCmd))] = m_NAtagGCArenaMatchList
+m_NAtagSCArenaMatchList=tagSCArenaMatchList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCArenaMatchList.Head.Cmd,m_NAtagSCArenaMatchList.Head.SubCmd))] = m_NAtagSCArenaMatchList
+
+
+#------------------------------------------------------
+# A9 23 演武场玩家信息 #tagSCArenaPlayerInfo
+
+class  tagSCArenaPlayerInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Score", c_int),    #当前积分
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0x23
+        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 = 0xA9
+        self.SubCmd = 0x23
+        self.Score = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCArenaPlayerInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 23 演武场玩家信息 //tagSCArenaPlayerInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Score:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Score
+                                )
+        return DumpString
+
+
+m_NAtagSCArenaPlayerInfo=tagSCArenaPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCArenaPlayerInfo.Cmd,m_NAtagSCArenaPlayerInfo.SubCmd))] = m_NAtagSCArenaPlayerInfo
 
 
 #------------------------------------------------------
@@ -38000,6 +37482,8 @@
                   ("BookInitState", c_ubyte),    # 图鉴激活状态:0-未激活;1-可激活;2-已激活
                   ("BookStarLV", c_ushort),    # 图鉴星级等级
                   ("BookBreakLV", c_ushort),    # 图鉴突破等级
+                  ("BookStarLVH", c_ushort),    # 图鉴星级历史最高等级
+                  ("BookBreakLVH", c_ushort),    # 图鉴突破历史最高等级
                   ]
 
     def __init__(self):
@@ -38017,6 +37501,8 @@
         self.BookInitState = 0
         self.BookStarLV = 0
         self.BookBreakLV = 0
+        self.BookStarLVH = 0
+        self.BookBreakLVH = 0
         return
 
     def GetLength(self):
@@ -38031,14 +37517,18 @@
                                 SkinState:%d,
                                 BookInitState:%d,
                                 BookStarLV:%d,
-                                BookBreakLV:%d
+                                BookBreakLV:%d,
+                                BookStarLVH:%d,
+                                BookBreakLVH:%d
                                 '''\
                                 %(
                                 self.HeroID,
                                 self.SkinState,
                                 self.BookInitState,
                                 self.BookStarLV,
-                                self.BookBreakLV
+                                self.BookBreakLV,
+                                self.BookStarLVH,
+                                self.BookBreakLVH
                                 )
         return DumpString
 

--
Gitblit v1.8.0