From 96c0ba31f74064e59c746921fcd1386cddf78d42 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 六月 2025 18:26:49 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(武将锁定、解锁;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py  |   21 ++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                |   12 ++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py |   10 ++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py        |   56 ++++++++++++++++++++++++++++
 4 files changed, 90 insertions(+), 9 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index f0662d7..5b58cd3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -1910,7 +1910,7 @@
 Writer = hxp
 Releaser = hxp
 RegType = 0
-RegisterPackCount = 8
+RegisterPackCount = 10
 
 PacketCMD_1=0xB2
 PacketSubCMD_1=0x30
@@ -1944,6 +1944,10 @@
 PacketSubCMD_8=0x37
 PacketCallFunc_8=OnHeroBookUP
 
-PacketCMD_9=0xB4
-PacketSubCMD_9=0x12
-PacketCallFunc_9=OnHeroBattlePosSave
+PacketCMD_9=0xB2
+PacketSubCMD_9=0x38
+PacketCallFunc_9=OnHeroLock
+
+PacketCMD_10=0xB4
+PacketSubCMD_10=0x12
+PacketCallFunc_10=OnHeroBattlePosSave
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 89d132b..324f86d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -17484,6 +17484,62 @@
 
 
 #------------------------------------------------------
+# B2 38 武将锁定 #tagCSHeroLock
+
+class  tagCSHeroLock(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引
+                  ("IsLock", c_ubyte),    #0-解锁;1-锁定
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x38
+        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 = 0x38
+        self.ItemIndex = 0
+        self.IsLock = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCSHeroLock)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 38 武将锁定 //tagCSHeroLock:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ItemIndex:%d,
+                                IsLock:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ItemIndex,
+                                self.IsLock
+                                )
+        return DumpString
+
+
+m_NAtagCSHeroLock=tagCSHeroLock()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroLock.Cmd,m_NAtagCSHeroLock.SubCmd))] = m_NAtagCSHeroLock
+
+
+#------------------------------------------------------
 # B2 30 武将升级 #tagCSHeroLVUP
 
 class  tagCSHeroLVUP(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index 4b2cec1..2700dd6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1661,11 +1661,11 @@
     if endIndex == 0:
         endIndex = curPack.GetCount() - 1
     #检查是否能整理
-    for i in range(0, curPack.GetCount()):
-        curItem = curPack.GetAt(i)
-        if curItem.GetIsLocked():
-            #GameWorld.Log("物品有锁, 不允许重整")
-            return
+    #for i in range(0, curPack.GetCount()):
+    #    curItem = curPack.GetAt(i)
+    #    if curItem.GetIsLocked():
+    #        #GameWorld.Log("物品有锁, 不允许重整")
+    #        return
     
     # 整理方式不同区分
     if packIndex == ShareDefine.rptHero:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
index 6801516..0a0aee9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -281,6 +281,9 @@
     if heroID != useHeroID:
         GameWorld.DebugLog("武将材料非本体,无法升星!", playerID)
         return
+    if useItem.GetIsLocked():
+        GameWorld.DebugLog("材料卡锁定中,无法升星! useItemIndex=%s,heroID=%s" % (useItemIndex, heroID), playerID)
+        return
     washIDCnt = heroItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentWashID)
     if washIDCnt:
         GameWorld.ErrLog("武将洗炼结果未处理,无法升星! itemIndex=%s,heroID=%s" % (itemIndex, heroID), playerID)
@@ -969,6 +972,24 @@
     
     return
 
+#// B2 38 武将锁定 #tagCSHeroLock
+#
+#struct    tagCSHeroLock
+#{
+#    tagHead        Head;
+#    WORD        ItemIndex;    //武将物品所在武将背包位置索引
+#    BYTE        IsLock;        //0-解锁;1-锁定
+#};
+def OnHeroLock(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    itemIndex = clientData.ItemIndex
+    isLock = clientData.IsLock
+    heroItem = GetHeroItem(curPlayer, itemIndex)
+    if not heroItem:
+        return
+    heroItem.SetIsLocked(1 if isLock else 0)
+    return
+
 #// B4 12 战斗阵型保存 #tagCSHeroBattlePosSave
 #
 #struct    tagCSHeroBattlePos

--
Gitblit v1.8.0