为什么它不会从我的背包中移除我的物品

Why won't it remove my items from my Backpack

我要切入正题。每当此脚本执行时:

local hotkey = Enum.KeyCode.P

local plr = game.Players.LocalPlayer
local char = plr.Character
local backpackItems = plr.Backpack:GetChildren()

local UIS = game:GetService("UserInputService")
local open = false


UIS.InputBegan:Connect(function(key, gp)
    if key.KeyCode == hotkey then
        char.UpperTorso.CFrame = CFrame.new(132.109, -84.7, 22.002)
        local takenItemsStorageFolder = Instance.new("Folder")
        
        takenItemsStorageFolder.Parent = game.ReplicatedStorage
        takenItemsStorageFolder.Name = "Removed Items From ".. plr.Name
        backpackItems.Parent = takenItemsStorageFolder
    end 
end)

它会将你的玩家传送到地图上的某个位置,但是涉及变量“backpackItems”和“takenItemsStorageFolder 的行" 正在尝试移除玩家背包中的 tools/items。但是脚本不会在执行时完成此操作。

一些其他信息:

此脚本位于 ScreenGui 中的 TextLabel 中。 (如果需要更多信息)

我在这里看到两个问题:

  1. 您在脚本首次执行时创建了一个 table 背包物品。稍后当按下“P”按钮时,您希望将这些对象移动到 takenItemsStorageFolder。但此时 Backpack 文件夹中可能会有不同的项目。

  2. 您正在尝试将 backpackItems table 作为 takenItemsStorageFolder 对象的父级,但这不适用于 table。相反,您必须遍历实际对象(背包的子对象)和每个对象的父对象。

所以作为解决方案而不是

backpackItems.Parent = takenItemsStorageFolder

我建议你这样做:

for i,v in pairs(plr.Backpack:GetChildren()) do
    v.Parent = takenItemsStorageFolder
end