| | |
| | | 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():
|
| | |
| | | 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
|
| | |
|