首页 > 解决方案 > 为什么它不能从我的背包中取出我的物品

问题描述

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

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)

它会将您的玩家传送到地图上的某个位置,但涉及变量“ packetItems ”和“ takenItemsStorageFolder ”的行试图移除玩家背包中的工具/物品。但脚本不会在执行时完成此操作。

其他一些信息:

此脚本位于ScreenGui中的TextLabel 内。(如有要求,请提供更多信息)

标签: luaroblox

解决方案


我在这里看到两个问题:

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

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

所以作为一个解决方案,而不是

backpackItems.Parent = takenItemsStorageFolder

我建议你这样做:

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

推荐阅读