From 5b8be8efb7dbb6a10421b6dde5624ab9c3e1ac63 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 23 二月 2024 16:12:04 +0800
Subject: [PATCH] 9802 9762 【BT9】【后端】藏宝阁修改(背包计算转化物品占用格子数逻辑优化;开宝箱计算获得物品占用格子数逻辑优化;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py  |    2 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py        |   22 ++++++++++++++++------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py |    2 +-
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py
index c6eeb37..21ddd5a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py
@@ -42,7 +42,7 @@
     if not itemData:
         GameWorld.DebugAnswer(curPlayer, '该物品不存在 = %s' % (itemID))
         return
-    if itemID in ChConfig.Def_TransformItemIDList or itemData.GetType() == ChConfig.Def_ItemType_AutoUseMoney:
+    if ItemControler.IsPutinAutoTransformItem(itemData):
         curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, curPlayer=curPlayer)
         PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
         if not PlayerItemControler.PutInItem(IPY_GameWorld.rptItem, curItem, event=event):
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 c3bd747..b0ec67c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1126,7 +1126,7 @@
         if itemEff.GetEffectID() == ChConfig.Def_Effect_GubaoPiece:
             gubaoID = itemEff.GetEffectValue(0)
             if gubaoID:
-                PlayerGubao.AddGubaoPiece(curPlayer, gubaoID, tagItem.GetCount(), itemID)
+                PlayerGubao.AddGubaoPiece(curPlayer, gubaoID, tagItemCount, itemID)
                 tagItem.Clear()
                 return True
         #直升VIP
@@ -1305,7 +1305,7 @@
             GameWorld.Log("找不到ItemID = %d" % curItemID)
             return False, 0 
         
-        if curItemID in ChConfig.Def_TransformItemIDList or curItemData.GetType() == ChConfig.Def_ItemType_AutoUseMoney:
+        if IsPutinAutoTransformItem(curItemData):
             # 货币直接转换的物品如果是放入背包的则直接转化,无需暂用格子
             if packIndex == IPY_GameWorld.rptItem:
                 return True, 0
@@ -2171,8 +2171,7 @@
 #  @return None
 def SetItemCount(item, cnt, playerID=0, accID=0, playerName=""):
     if not item.IsEmpty():
-        itemID = item.GetItemTypeID()
-        if cnt > 0 and (itemID in ChConfig.Def_TransformItemIDList or item.GetType() == ChConfig.Def_ItemType_AutoUseMoney):
+        if cnt > 0 and IsPutinAutoTransformItem(item):
             item.SetUserAttr(ShareDefine.Def_IudetItemCount, min(cnt, ChConfig.Def_UpperLimit_DWord))
         else:
             item.SetCount(min(cnt, 65535))
@@ -2185,7 +2184,7 @@
             raise
         
 def GetItemCount(item):
-    if item.GetItemTypeID() in ChConfig.Def_TransformItemIDList or item.GetType() == ChConfig.Def_ItemType_AutoUseMoney:
+    if IsPutinAutoTransformItem(item):
         return item.GetUserAttr(ShareDefine.Def_IudetItemCount)
     return item.GetCount()
 
@@ -2194,7 +2193,7 @@
 #    if isAuctionItem:
 #        if IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", itemData.GetItemTypeID()):
 #            return 1
-    if itemData.GetItemTypeID() in ChConfig.Def_TransformItemIDList or itemData.GetType() == ChConfig.Def_ItemType_AutoUseMoney:
+    if IsPutinAutoTransformItem(itemData):
         # 货币直接转换的物品如果是放入背包的则不需要暂用格子,放入其他的背包的则按物品叠加上限算
         if packType == IPY_GameWorld.rptItem:
             return 0
@@ -2203,6 +2202,17 @@
         packCount = itemData.GetPackCount()
     return int(math.ceil(itemCount / float(packCount)))
 
+def IsPutinAutoTransformItem(itemData):
+    ## 放入背包时是否直接转化为对应数值的物品
+    if itemData.GetItemTypeID() in ChConfig.Def_TransformItemIDList or itemData.GetType() == ChConfig.Def_ItemType_AutoUseMoney:
+        return True
+    itemEff = itemData.GetEffectByIndex(0)
+    if itemEff.GetEffectID() == ChConfig.Def_Effect_GubaoPiece:
+        gubaoID = itemEff.GetEffectValue(0)
+        if gubaoID:
+            return True
+    return False
+
 ## 双手武器,需要两只手才拿得动
 #  @param curEquip
 #  @return bool
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py
index c8b0ebe..39f8371 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py
@@ -229,7 +229,7 @@
             GameWorld.ErrLog("宝箱奖励物品不存在! chestsItemID=%s,itemID=%s,jobItemID=%s" % (chestsItemID, itemID, jobItemID))
             return
         packType = ChConfig.GetItemPackType(itemData)
-        needSpace = int(math.ceil(itemCount / float(itemData.GetPackCount())))
+        needSpace = ItemControler.GetItemNeedPackCount(packType, itemData, itemCount)
         needSpaceDict[packType] = needSpaceDict.get(packType, 0) + needSpace
         
         # 装备拆开给,需要同步每件装备的属性

--
Gitblit v1.8.0