From 0be2d6f2947fe9f3573841aee07dde4b9f4211b9 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 19 九月 2024 16:39:21 +0800 Subject: [PATCH] 10267 【越南】【英文】【砍树】优化GivePlayerItemOrMail,防范列表元素包含None报错; --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) 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 6468de1..b17ef36 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py @@ -2525,8 +2525,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()) @@ -2534,6 +2539,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): @@ -2541,10 +2549,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 -- Gitblit v1.8.0