hxp
2024-11-08 afc1db00be5cbd66a8c74ba01f74be7104bb73fb
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -2556,3 +2556,56 @@
            GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=event)
    return
def RecycleItem(curPlayer, itemID, notifyMailKey):
    ## 回收物品,一般用于相关活动结束后回收活动道具
    if not itemID:
        return
    playerID = curPlayer.GetPlayerID()
    recycleCount = 0 # 回收总数
    moneyItemID, moneyCount = None, None
    # 背包、仓库
    for packType in [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse]:
        backPack = curPlayer.GetItemManager().GetPack(packType)
        for i in range(backPack.GetCount())[::-1]: # 会删除,倒序遍历
            curItem = backPack.GetAt(i)
            if not curItem or curItem.IsEmpty():
                continue
            if curItem.GetItemTypeID() != itemID:
                continue
            itemCount = GetItemCount(curItem)
            equipNoteDict = ItemCommon.GetItemNoteDict(curItem, itemCount)
            ItemCommon.DR_DelItem(curPlayer, packType, "RecycleItem", equipNoteDict)
            recycleCount += itemCount
            if moneyItemID == None:
                moneyItemID, moneyCount = 0, 0
                for i in range(curItem.GetEffectCount()):
                    effect = curItem.GetEffectByIndex(i)
                    if effect.GetEffectID() != ChConfig.Def_Effect_RecycleItemMoney:
                        continue
                    moneyItemID = effect.GetEffectValue(0)
                    moneyCount = effect.GetEffectValue(1)
                    break
            curItem.Clear()
    if not recycleCount:
        return
    addItemList = []
    if moneyItemID and moneyCount:
        moneyItemData = GameWorld.GetGameData().GetItemByTypeID(moneyItemID)
        if moneyItemData:
            addItemList.append([moneyItemID, moneyCount * recycleCount, 0])
    if notifyMailKey:
        paramList = [itemID, itemID, recycleCount]
        PlayerControl.SendMailByKey(notifyMailKey, [playerID], addItemList, paramList)
    elif addItemList:
        GivePlayerItemOrMail(curPlayer, addItemList, event=["RecycleItem", False, {"RecycleItemID":itemID}])
    return