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/Item/ItemControler.py | 17 ++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py | 55 +++++++++++++++------------
2 files changed, 43 insertions(+), 29 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 183b08d..e4d03be 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -2144,10 +2144,19 @@
isOK = True # 只要有成功的就返回成功,防止异常情况失败可能导致被刷
return isOK
- giveItem = GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer)
- if not giveItem:
- return False
- return DoLogic_PutItemInPack(curPlayer, giveItem, event, packIndexList)
+ #常规物品
+ isOK = False
+ for _ in range(itemCount/65535 + 1):
+ if itemCount <= 0:
+ break
+ giveItem = GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer)
+ if not giveItem:
+ return isOK
+ giveCount = GetItemCount(giveItem)
+ if DoLogic_PutItemInPack(curPlayer, giveItem, event, packIndexList):
+ isOK = True
+ itemCount -= giveCount
+ return isOK
def GivePlayerAppointItem(curPlayer, appointID, isAuctionItem, event=["", False, {}]):
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