10205 【越南】【主干】【港台】【砍树】自选礼包(支持一次性放入超65535个数叠加物品;邮件同步支持一次性领取超65535个数叠加物品)
2个文件已修改
72 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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, {}]):
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)