From 7d0019192b6df3e01bcfee0c2f4b62d036fa9e3a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 02 三月 2026 19:58:13 +0800
Subject: [PATCH] 501 【武将】武将时装-服务端(增加时装形象,与时装属性相互独立;每个武将物品独立,UserData原78-皮肤形象索引,增加82-皮肤属性索引;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py |  232 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 176 insertions(+), 56 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 8bb63c4..2ef3d6c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -8138,6 +8138,118 @@
 
 
 #------------------------------------------------------
+# AA 02 武将登场招募武将选择 #tagCSActHeroAppearCallHeroSelect
+
+class  tagCSActHeroAppearCallHeroSelect(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    # 活动编号
+                  ("CallHeroIndex", c_ubyte),    # 招募选择的武将ID索引
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        self.SubCmd = 0x02
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAA
+        self.SubCmd = 0x02
+        self.ActNum = 0
+        self.CallHeroIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCSActHeroAppearCallHeroSelect)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 02 武将登场招募武将选择 //tagCSActHeroAppearCallHeroSelect:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d,
+                                CallHeroIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum,
+                                self.CallHeroIndex
+                                )
+        return DumpString
+
+
+m_NAtagCSActHeroAppearCallHeroSelect=tagCSActHeroAppearCallHeroSelect()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSActHeroAppearCallHeroSelect.Cmd,m_NAtagCSActHeroAppearCallHeroSelect.SubCmd))] = m_NAtagCSActHeroAppearCallHeroSelect
+
+
+#------------------------------------------------------
+# AA 01 武将登场升星武将选择 #tagCSActHeroAppearStarHeroSelect
+
+class  tagCSActHeroAppearStarHeroSelect(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    # 活动编号
+                  ("StarHeroIndex", c_ubyte),    # 升星计划选择的武将ID索引
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        self.SubCmd = 0x01
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAA
+        self.SubCmd = 0x01
+        self.ActNum = 0
+        self.StarHeroIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCSActHeroAppearStarHeroSelect)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 01 武将登场升星武将选择 //tagCSActHeroAppearStarHeroSelect:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d,
+                                StarHeroIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum,
+                                self.StarHeroIndex
+                                )
+        return DumpString
+
+
+m_NAtagCSActHeroAppearStarHeroSelect=tagCSActHeroAppearStarHeroSelect()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSActHeroAppearStarHeroSelect.Cmd,m_NAtagCSActHeroAppearStarHeroSelect.SubCmd))] = m_NAtagCSActHeroAppearStarHeroSelect
+
+
+#------------------------------------------------------
 # AA 25 炼器操作 #tagCMActLianqiOP
 
 class  tagCMActLianqiOP(Structure):
@@ -10195,6 +10307,70 @@
 
 
 #------------------------------------------------------
+# B2 36 武将皮肤操作 #tagCSHeroSkinOP
+
+class  tagCSHeroSkinOP(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("HeroID", c_int),    #武将ID
+                  ("SkinID", c_int),    #时装ID
+                  ("OPType", c_ubyte),    #操作 1-激活;2-选择形象;3-升星;4-选择属性
+                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引,仅佩戴时有效
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x36
+        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 = 0xB2
+        self.SubCmd = 0x36
+        self.HeroID = 0
+        self.SkinID = 0
+        self.OPType = 0
+        self.ItemIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCSHeroSkinOP)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 36 武将皮肤操作 //tagCSHeroSkinOP:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                HeroID:%d,
+                                SkinID:%d,
+                                OPType:%d,
+                                ItemIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.HeroID,
+                                self.SkinID,
+                                self.OPType,
+                                self.ItemIndex
+                                )
+        return DumpString
+
+
+m_NAtagCSHeroSkinOP=tagCSHeroSkinOP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroSkinOP.Cmd,m_NAtagCSHeroSkinOP.SubCmd))] = m_NAtagCSHeroSkinOP
+
+
+#------------------------------------------------------
 # B2 31 武将升星 #tagCSHeroStarUP
 
 class  tagCSHeroStarUP(Structure):
@@ -10329,62 +10505,6 @@
 
 m_NAtagCSHeroWash=tagCSHeroWash()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroWash.Head.Cmd,m_NAtagCSHeroWash.Head.SubCmd))] = m_NAtagCSHeroWash
-
-
-#------------------------------------------------------
-# B2 36 武将换肤 #tagCSHeroWearSkin
-
-class  tagCSHeroWearSkin(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引
-                  ("SkinIndex", c_ubyte),    #皮肤索引
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB2
-        self.SubCmd = 0x36
-        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 = 0xB2
-        self.SubCmd = 0x36
-        self.ItemIndex = 0
-        self.SkinIndex = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCSHeroWearSkin)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B2 36 武将换肤 //tagCSHeroWearSkin:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ItemIndex:%d,
-                                SkinIndex:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ItemIndex,
-                                self.SkinIndex
-                                )
-        return DumpString
-
-
-m_NAtagCSHeroWearSkin=tagCSHeroWearSkin()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroWearSkin.Cmd,m_NAtagCSHeroWearSkin.SubCmd))] = m_NAtagCSHeroWearSkin
 
 
 #------------------------------------------------------

--
Gitblit v1.8.0