为什么我的背包物品不会被移除

我来直接点题。每当这段脚本被执行:

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" 变量相关的部分都试图移除玩家背包中的工具/物品。但脚本不会在执行中完成此操作。

一些其他信息:

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

点赞
用户1296374
用户1296374

我在这里看到两个问题:

  1. 当脚本首次执行时,您正在创建一个背包物品表。稍后,当按下“P”按钮时,您想将那些对象移动到takenItemsStorageFolder中。但是在那时,Backpack文件夹中可能会有不同的物品。

  2. 您尝试将背包物品表与takenItemsStorageFolder对象连接,但这对于表格不起作用。相反,您必须遍历实际对象(Backpack的子对象)并将每个对象的父级设置为takenItemsStorageFolder。

因此,作为解决方案,而不是

backpackItems.Parent = takenItemsStorageFolder

我建议您执行以下操作:

for i,v in pairs(plr.Backpack:GetChildren()) do
    v.Parent = takenItemsStorageFolder
end
2021-02-22 04:39:12