From c63ffd10aecb12b2e09dae603cf9a0f824f6482c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 十二月 2025 15:46:15 +0800
Subject: [PATCH] 16 卡牌服务端(合成目标物品与材料物品不在同一背包时支持合成;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py |   24 +++++++++++++++++++-----
 1 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
index 27fb851..ad2c82b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
@@ -110,13 +110,19 @@
         return
     
     itemPack = curPlayer.GetItemManager().GetPack(packType)
+    unfixedItemPack, fixedItemPack = None, None # 目标物品与材料可能在不同背包,区分开
     itemExpireTime = 0
     # 检查不固定消耗道具
     if unfixedItemIDList:
         unfixedItem = GameWorld.GetGameData().GetItemByTypeID(unfixedItemIDList[0])
         if not unfixedItem:
             return
-        unfixedItemCostInfo = __CheckUnfixedItem(curPlayer, compoundID, makeItemData, itemPack, unfixedItemIndexList, 
+        unfixedPackType = ChConfig.GetItemPackType(unfixedItem, IPY_GameWorld.rptItem)
+        unfixedItemPack = curPlayer.GetItemManager().GetPack(unfixedPackType)
+        GameWorld.DebugLog("unfixedPackType=%s" % (unfixedPackType), playerID)
+        if not unfixedItemPack:
+            return
+        unfixedItemCostInfo = __CheckUnfixedItem(curPlayer, compoundID, makeItemData, unfixedItemPack, unfixedItemIndexList, 
                                                  unfixedItemIDList, needUnfixedItemCount)
         if not unfixedItemCostInfo:
             return
@@ -126,7 +132,15 @@
         
     # 检查固定消耗道具
     if fixedItemIDList:
-        fixedItemInfo = __CheckFixedItem(playerID, compoundID, itemPack, fixedItemIndexList, fixedItemIDList, fixedItemCountList, compoundCnt)
+        fixedItem = GameWorld.GetGameData().GetItemByTypeID(fixedItemIDList[0])
+        if not fixedItem:
+            return
+        fixedPackType = ChConfig.GetItemPackType(fixedItem, IPY_GameWorld.rptItem)
+        fixedItemPack = curPlayer.GetItemManager().GetPack(fixedPackType)
+        GameWorld.DebugLog("fixedPackType=%s" % (fixedPackType), playerID)
+        if not fixedItemPack:
+            return
+        fixedItemInfo = __CheckFixedItem(playerID, compoundID, fixedItemPack, fixedItemIndexList, fixedItemIDList, fixedItemCountList, compoundCnt)
         if not fixedItemInfo:
             return
         fixedItemIndexDict, fixedItemNeedCntDict, compoundBindCnt, expireTime = fixedItemInfo
@@ -156,7 +170,7 @@
     # 扣不固定消耗物品
     if unfixedItemIDList:
         bindUnfixedIndexList, unbindUnfixedIndexList = unfixedItemCostList
-        hasBind = ItemCommon.ReduceItem(curPlayer, itemPack, bindUnfixedIndexList + unbindUnfixedIndexList, needUnfixedItemCount, 
+        hasBind = ItemCommon.ReduceItem(curPlayer, unfixedItemPack, bindUnfixedIndexList + unbindUnfixedIndexList, needUnfixedItemCount, 
                                         False, ChConfig.ItemDel_ItemCompound, drDict)
         makeItemBind = True if hasBind else makeItemBind
         
@@ -167,9 +181,9 @@
             bindFixedIndexList, unbindFixedIndexList = fixedItemIndexDict[fixedItemID]
             if delBindCnt:
                 makeItemBind = True
-                ItemCommon.ReduceItem(curPlayer, itemPack, bindFixedIndexList, delBindCnt, False, ChConfig.ItemDel_ItemCompound, drDict)
+                ItemCommon.ReduceItem(curPlayer, fixedItemPack, bindFixedIndexList, delBindCnt, False, ChConfig.ItemDel_ItemCompound, drDict)
             if delUnBindCnt:
-                ItemCommon.ReduceItem(curPlayer, itemPack, unbindFixedIndexList, delUnBindCnt, False, ChConfig.ItemDel_ItemCompound, drDict)
+                ItemCommon.ReduceItem(curPlayer, fixedItemPack, unbindFixedIndexList, delUnBindCnt, False, ChConfig.ItemDel_ItemCompound, drDict)
     
     # 扣提升概率道具
     if incRateItemCostList:

--
Gitblit v1.8.0