From 9a3d8668d39c6f201b1843ff24c2f5ed5659e63c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 七月 2024 11:35:18 +0800
Subject: [PATCH] 10205 【越南】【主干】【港台】【砍树】自选礼包(支持一次性放入超65535个数叠加物品;邮件同步支持一次性领取超65535个数叠加物品)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py |   55 ++++++++++++++++++++++++++++++-------------------------
 1 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
index cd8921a..b085424 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
@@ -145,33 +145,38 @@
     for i in xrange(curPackData.Count):
         curPackItem = curPackData.Items[i]
         itemID = curPackItem.ItemID
+        itemCount = curPackItem.Count
         isAuctionItem = curPackItem.IsBind and not auctionItemTimeout
-        if ItemControler.GetAppointItemRealID(itemID):
-            curCreateItem = ItemControler.GetItemByData(ItemControler.GetAppointItemDictData(itemID, isAuctionItem))
-        else:
-            curCreateItem = ItemCommon.CreateSingleItem(itemID, curPackItem.Count, isAuctionItem)
-        if not curCreateItem:
-            GameWorld.ErrLog("OnGMRequestCompensationResult CreateSingleItem %s Err "%itemID)
-            continue
-        
-        ##UserData包含了追加属性不完整,这里需要补齐
-        userDataCreateTime = 0
-        if curPackItem.UserDataLen: 
-            UserDataDict = eval(curPackItem.UserData)
-            ItemCommon.SetItemUserData(curCreateItem, UserDataDict)
-            userDataCreateTime = curCreateItem.GetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
+        for _ in range(itemCount/65535+1):
+            if itemCount <= 0:
+                break
+            if ItemControler.GetAppointItemRealID(itemID):
+                curCreateItem = ItemControler.GetItemByData(ItemControler.GetAppointItemDictData(itemID, isAuctionItem))
+            else:
+                curCreateItem = ItemCommon.CreateSingleItem(itemID, itemCount, isAuctionItem)
+            if not curCreateItem:
+                GameWorld.ErrLog("OnGMRequestCompensationResult CreateSingleItem %s Err "%itemID)
+                continue
+            giveCount = ItemControler.GetItemCount(curCreateItem)
+            itemCount -= giveCount
+            ##UserData包含了追加属性不完整,这里需要补齐
+            userDataCreateTime = 0
+            if curPackItem.UserDataLen: 
+                UserDataDict = eval(curPackItem.UserData)
+                ItemCommon.SetItemUserData(curCreateItem, UserDataDict)
+                userDataCreateTime = curCreateItem.GetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
+                
+            if isAuctionItem and auctionItemCreateTime and not userDataCreateTime:
+                curCreateItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, auctionItemCreateTime)
+                
+            ItemCommon.MakeEquipGS(curCreateItem)
             
-        if isAuctionItem and auctionItemCreateTime and not userDataCreateTime:
-            curCreateItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, auctionItemCreateTime)
-            
-        ItemCommon.MakeEquipGS(curCreateItem)
-        
-        if isPaimaiMail and ItemCommon.CheckItemIsEquip(curCreateItem):
-            EventShell.EventRespons_BuyAuctionEquip(curPlayer, curCreateItem.GetItemColor())
-            
-        #放入玩家背包
-        ItemControler.PlayerItemControler(curPlayer).PutInItem(IPY_GameWorld.rptItem, curCreateItem, 
-                                                               event=[ChConfig.ItemGive_Mail, False, {"MailGUID":curPackData.GUID}])
+            if isPaimaiMail and ItemCommon.CheckItemIsEquip(curCreateItem):
+                EventShell.EventRespons_BuyAuctionEquip(curPlayer, curCreateItem.GetItemColor())
+                
+            #放入玩家背包
+            ItemControler.PlayerItemControler(curPlayer).PutInItem(IPY_GameWorld.rptItem, curCreateItem, 
+                                                                   event=[ChConfig.ItemGive_Mail, False, {"MailGUID":curPackData.GUID}])
     moneySource = curPackData.MoneySource + ChConfig.Def_GiveMoney_Unknown # 存值时为byte类型,使用时需还原回来
     if curPackData.Gold != 0:
         PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, curPackData.Gold, moneySource)

--
Gitblit v1.8.0