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