hxp
2019-04-13 11e82d25c1aa5b91706689d0414fdc893ed52627
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