Ad
Still have questions? Join our Discord server and get real time help.
Log in to vote
1

How would one insert a tool in a LocalPlayer's backpack via script?

Asked by 2 months ago

I've been having this issue in my tree-cutting game where I'm trying to give the player wood that he/she can carry around. (Don't worry, there's a lot more to the game than that) so, I tried many different techniques to do this. Unfortunately, like all of my scripts, they didn't work.

So what happens is: The player clicks on the tree and the tree disappears until it regnerates. I want to make it so that the player recieves a block of wood for every tree they cut down.

I also used Instance.new to model a tool handle because I figured it wouldn't be that difficult because it's literally just a block of wood.

Here's my code edit it all you want.

local pines = game.Workspace.Game.Forests.PinePoint --Pine Point is the name of the forest and Forests is the folder.

local pine = pines:FindFirstChild(pines.PineTree)
local tool = Instance.new("Tool")
    tool.Name = "Pine"
local handle = Instance.new("Part")
    handle.Parent = tool
    handle.Material = Enum.Material.Wood
    handle.BrickColor = BrickColor.new("Pine Cone")


pines.ChildRemoved:Connect(function()
    local function giveTool(player, tool)
        local backpack = player:FindFirstChildOfClass("Backpack")
        if backpack then
            tool.Parent = backpack
        end
    end
end)

(go easy on me with the obvious answers)

0
I don't understand why you'd be defining a function inside of an anonymous function, but it's your script. ParticularlyPenguin 69 — 2mo

1 answer

Log in to vote
0
Answered by
Raccoonyz 691 Donator Moderation Voter
2 months ago
Edited 2 months ago

There's a few issues that I can see. First off, it seems that you haven't defined the "player" variable in the local function. From what I assume you are trying to do, if you wanted to fix this you'd have to change basically everything in your script. You'd have to put the script in the ClickDetector script.

Here's an example of what you could do.

local clickDetector = script.Parent.ClickDetector -- Assumes that the script is in a model which has the ClickDetector
local clickLimit = 5

clickDetector.MouseClick:Connect(function(player)
    clickLimit = clickLimit - 1
    if clickLimit <= 0 then
        local tool = Instance.new("Tool") -- Create a new tool
        tool.Name = "Pine"
        local wood = Instance.new("Part") -- Create the wood / handle for the tool
        wood.Parent = tool
        wood.Name = "Handle" -- Name the wood "Handle" to make sure it is the handle of the tool
        wood.Material = Enum.Material.Wood
        wood.BrickColor = BrickColor.new("Pine Cone")
        tool.Parent = player.Backpack
        script.Parent:Destroy() -- Destroy the tree
    end
end)

Another issue: You had a local function but you never even triggered it. You need to trigger functions in order for them to work, otherwise they will just be floating around and not doing much.

Ad

Answer this question