10267 【越南】【英文】【砍树】优化GivePlayerItemOrMail,防范列表元素包含None报错;
1个文件已修改
16 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -2882,8 +2882,13 @@
    ##给物品,背包满则发邮件
    if not itemList:
        return
    giveItemList = []
    needPackSpaceDict = {}
    for itemID, itemCnt, isAuctionItem in itemList:
    for itemInfo in itemList:
        if not itemInfo:
            continue
        itemID, itemCnt = itemInfo[:2]
        isAuctionItem = itemInfo[2] if len(itemInfo) > 2 else 0
        curItem = GameWorld.GetGameData().GetItemByTypeID(itemID)
        if not curItem:
            GameWorld.ErrLog('GivePlayerItemOrMail 物品ID不存在 itemID=%s'%itemID, curPlayer.GetID())
@@ -2891,6 +2896,9 @@
        packType = ChConfig.GetItemPackType(curItem)
        needSpace = GetItemNeedPackCount(packType, curItem, itemCnt, isAuctionItem)
        needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
        giveItemList.append([itemID, itemCnt, isAuctionItem])
    if not giveItemList:
        return
    isSendMail = False
    for packType, needSpace in needPackSpaceDict.items():
        if needSpace > ItemCommon.GetItemPackSpace(curPlayer, packType, needSpace):
@@ -2898,10 +2906,10 @@
            break
           
    if isSendMail:
        PlayerControl.SendMailByKey(mailKey, [curPlayer.GetPlayerID()], itemList)
        GameWorld.DebugLog("GivePlayerItemOrMail背包空间不够,发送邮件: mailItemList=%s" % str(itemList), curPlayer.GetPlayerID())
        PlayerControl.SendMailByKey(mailKey, [curPlayer.GetPlayerID()], giveItemList)
        GameWorld.DebugLog("GivePlayerItemOrMail背包空间不够,发送邮件: mailItemList=%s" % str(giveItemList), curPlayer.GetPlayerID())
    else:
        for itemID, itemCnt, isAuctionItem in itemList:
        for itemID, itemCnt, isAuctionItem in giveItemList:
            GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=event)
    return