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