9802 9762 【BT9】【后端】藏宝阁修改(背包计算转化物品占用格子数逻辑优化;开宝箱计算获得物品占用格子数逻辑优化;)
3个文件已修改
26 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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):
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
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
        
        # 装备拆开给,需要同步每件装备的属性