From 11e82d25c1aa5b91706689d0414fdc893ed52627 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 13 四月 2019 11:11:38 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(妖王初版) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 43 ++++++++++++++++++++++++++++++++++++++----- 1 files changed, 38 insertions(+), 5 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 591fedb..b40aa4e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py @@ -2559,13 +2559,16 @@ def GivePlayerItemOrMail(curPlayer, itemList, mailKey=None, event=["", False, {}]): ##给物品,背包满则发邮件 needPackSpaceDict = {} - for itemID, itemCnt, isAuctionItem in itemList: + for itemInfo in itemList: + itemID, itemCount, isAuctionItem, userData = GetItemInfo(itemInfo) + if not itemID: + continue curItem = GameWorld.GetGameData().GetItemByTypeID(itemID) if not curItem: GameWorld.ErrLog('GivePlayerItemOrMail 物品ID不存在 itemID=%s'%itemID, curPlayer.GetID()) return packType = ChConfig.GetItemPackType(curItem.GetType()) - needSpace = GetItemNeedPackCount(packType, curItem, itemCnt, isAuctionItem) + needSpace = GetItemNeedPackCount(packType, curItem, itemCount, isAuctionItem) needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace isSendMail = False for packType, needSpace in needPackSpaceDict.items(): @@ -2576,7 +2579,37 @@ if isSendMail: PlayerControl.SendMailByKey(mailKey, [curPlayer.GetPlayerID()], itemList) GameWorld.DebugLog("GivePlayerItemOrMail背包空间不够,发送邮件: mailItemList=%s" % str(itemList), curPlayer.GetPlayerID()) - else: - for itemID, itemCnt, isAuctionItem in itemList: - GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=event) + return + + playerItemControl = PlayerItemControler(curPlayer) + for itemInfo in itemList: + itemID, itemCount, isAuctionItem, userData = GetItemInfo(itemInfo) + if not itemID: + continue + if GetAppointItemRealID(itemID): + curCreateItem = GetItemByData(GetAppointItemDictData(itemID, isAuctionItem)) + else: + curCreateItem = ItemCommon.CreateSingleItem(itemID, itemCount, isAuctionItem) + if not curCreateItem: + continue + if userData: + curCreateItem.SetUserData(userData, len(userData)) + ItemCommon.MakeEquipGS(curCreateItem) + #放入玩家背包 + playerItemControl.PutInItem(IPY_GameWorld.rptItem, curCreateItem, event=event) + return + +def GetItemInfo(itemInfo): + if isinstance(itemInfo, dict): + itemID = itemInfo['ItemID'] + itemCount = itemInfo['Count'] + isAuctionItem = itemInfo['IsAuctionItem'] + userData = itemInfo['UserData'] + elif isinstance(itemInfo, list) and len(itemInfo) == 3: + itemID, itemCount, isAuctionItem = itemInfo + userData = "" + else: + return 0, 0, 0, "" + return itemID, itemCount, isAuctionItem, userData + -- Gitblit v1.8.0