Basically, I have disabled the backpack core gui, and so I’m using hum:equiptool to equip the tool, but when the tool isn’t in workspace, it doesn’t equip to my character, It just becomes visible and sits where it starts, and this also wont go to my character when the tool is anchored beforehand, for example, If the tool is anchored and then I unanchor and equip it to my humanoid, the tool just wont stick to the character and will do the same thing, become visible and sit there. Can anyone help me fix this? It’s not necessary to have a secret bunker of tools
You can parent the Tool to the player’s Character which should cause them to equip it as well
how about you move the tool to workspace just before you call Humanoid:EquipTool, and move it back to somewhere else just after calling the unequip function?
Weirdly, only equip tool works when the backpack is disabled, and it just stays in the same position.
I tried this and it done the exact same thing, just became visible and sat there, not in my hand, but when it is in workspace beforehand, somehow it works…
Are you using a server Script or a LocalScript to equip the Tool?
Localscript
[I hate the minimum word thingy]
I would suggest using a server Script to make the character equip the Tool. I’ll see if I can find a way to replicate your problem so I can test it too
Okay, thank you, and please tell me your results
During testing I’m noticing something important: Does your Tool have a handle? If it doesn’t then the character won’t hold out their hand even if the Tool is successfully equipped
Yes, it does indeed have a handle named “Handle”
I noticed that in the serverscript, even if it’s in replicated storage, parenting the tool to char actually does work.
I’m unable to replicate you issue when testing using a Tool that has a Handle, so I’ll need to see your current script if possible
Okay, here
Code:
local closet = workspace.Closet
local closetProx = closet:WaitForChild(“closetProximity”):WaitForChild(“ProximityPrompt”)
local dad = workspace:WaitForChild(“Father”)
local dhp = dad:WaitForChild(“HumanoidRootPart”)
local askDad = dad:WaitForChild(“Torso”):WaitForChild(“askDad”)
local plr = game.Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local hrp = char:FindFirstChild(“HumanoidRootPart”)
local hum = char:FindFirstChild(“Humanoid”)
local Control = require(game.ReplicatedStorage:WaitForChild(“Modules”):WaitForChild(“plrControl”))
local objective = plr.PlayerGui.Main.Objective
local dialogue = plr.PlayerGui.Main.Dialogue
local cam = workspace.CurrentCamera
local SCam = workspace:WaitForChild(“SCam”)
local animate = char:WaitForChild(“Animate”)
local washingMachine = workspace.WashingMachine
local washingProx = washingMachine:WaitForChild(“proxPart”):WaitForChild(“ProximityPrompt”)
local walk = animate:WaitForChild(“walk”):WaitForChild(“WalkAnim”)
local normalWalk = walk.AnimationId
local idle = animate:WaitForChild(“idle”):WaitForChild(“Animation1”)
local normalIdle = idle.AnimationId
local idle1 = animate:WaitForChild(“idle”):WaitForChild(“Animation2”)
local normalIdle1 = idle1.AnimationId
local cartoonFootsteps = “rbxassetid://15996127789”
local noJumpId = “”
local walkID = “rbxassetid://16029212356”
local tap = workspace:WaitForChild(“Tap”)
local tapProx = tap:WaitForChild(“tapProx”):WaitForChild(“ProximityPrompt”)
local cleanPlates = workspace:WaitForChild(“CleanPlates”)
local dirtyPlates = tap:WaitForChild(“DirtyPlates”)
local tapWater = tap:WaitForChild(“tapWater”)
local water = tap:WaitForChild(“water”)
local ts = game:GetService(“TweenService”)
local ti = TweenInfo.new(3)
local waterTween = ts:Create(water, ti, {Size = water.Size + Vector3.new(0,1.5,0)})
local idleID = “rbxassetid://16029335566”
local soundID = game.ReplicatedStorage:WaitForChild(“Events”):WaitForChild(“SoundID”)
local bigstepsID = “rbxassetid://1244506786”
local normalSteps = “rbxassetid://15996127789”
local DCam = workspace:WaitForChild(“DCam”)
local Time = 0
local skipTime = 0
local bin = workspace:WaitForChild(“Bin”)
local binProx = bin:WaitForChild(“proxPart”):WaitForChild(“ProximityPrompt”)
local trash = workspace:WaitForChild(“Trash”)
local trashProx = trash:WaitForChild(“proxPart”):WaitForChild(“ProximityPrompt”)
local trashTool = workspace:WaitForChild(“TrashTool”)
local skipTime1 = 0
local skipTime2 = 0
local tpPart = workspace.dialogueTp
local skip = plr.PlayerGui.Main.Skip
local laundry = false
local event = game.ReplicatedStorage:WaitForChild(“Events”):WaitForChild(“Cutscene”)
local skipped = false
local uis = game:GetService(“UserInputService”)
local LaundryProx = workspace:WaitForChild(“Laundry”):WaitForChild(“proxPart”):WaitForChild(“ProximityPrompt”)
closetProx.Triggered:Connect(function()
closetProx:Destroy()
askDad.Enabled = true
char:WaitForChild(“Pants”).PantsTemplate = “”
char:WaitForChild(“Shirt”).ShirtTemplate = “”
objective.Objective.Text = “Ask father if you can do your essay”
end)
tapProx.Triggered:Connect(function()
tapWater.Transparency = 0
water.Transparency = 0
tapProx.Parent:Destroy()
waterTween:Play()
tapWater:WaitForChild(“FaucetSound”):Play()
wait(3)
tapWater:WaitForChild(“FaucetSound”):Stop()
tapWater:Destroy()
dirtyPlates:Destroy()
for i,v in pairs(cleanPlates:GetChildren()) do
if v:IsA(“Part”) then
v.Transparency = 0
end
end
objective.Objective.Text = “Ask father if you can do your essay”
askDad.Enabled = true
end)
trashProx.Triggered:Connect(function()
for i,v in pairs(trashTool:GetChildren()) do
if v:IsA(“Part”) then
v.Transparency = 0
v.Anchored = false
v.CanCollide = false
end
end
trash:Destroy()
hum:EquipTool(trashTool)
Control.Uncontrol(hum)
walk.AnimationId = walkID
idle.AnimationId = idleID
idle1.AnimationId = idleID
binProx.Enabled = true
game.SoundService["The Entertainer (a)"]:Stop()
game.SoundService["heavy long scream"]:Play()
wait(0.2)
hrp:WaitForChild("Running").SoundId = bigstepsID
hrp:WaitForChild("Running").PlaybackSpeed = 0.8
hum.WalkSpeed = 9
hum.JumpPower = 0
end)
binProx.Triggered:Connect(function()
hum:UnequipTools()
Control.Uncontrol(hum)
walk.AnimationId = normalWalk
idle.AnimationId = normalIdle
idle1.AnimationId = normalIdle1
binProx:Destroy()
game.SoundService["The Entertainer (a)"]:Play()
game.SoundService["heavy long scream"]:Stop()
bin:WaitForChild("Part"):WaitForChild("binSound"):Play()
wait(0.2)
hrp:WaitForChild("Running").SoundId = cartoonFootsteps
hrp:WaitForChild("Running").PlaybackSpeed = 1
hum.WalkSpeed = 25
hum.JumpPower = 53
objective.Objective.Text = "Ask father if you can do your essay"
end)
LaundryProx.Triggered:Connect(function()
local laundry = workspace:WaitForChild(“LaundryBasket”)
for i,v in pairs(laundry:GetChildren()) do
if v:IsA(“Part”) then
v.Transparency = 0
v.Anchored = false
end
end
workspace:WaitForChild("Laundry"):Destroy()
hum:EquipTool(laundry)
Control.Uncontrol(hum)
walk.AnimationId = walkID
idle.AnimationId = idleID
idle1.AnimationId = idleID
washingProx.Enabled = true
game.SoundService["The Entertainer (a)"]:Stop()
game.SoundService["heavy long scream"]:Play()
wait(0.2)
hrp:WaitForChild("Running").SoundId = bigstepsID
hrp:WaitForChild("Running").PlaybackSpeed = 0.8
hum.WalkSpeed = 9
hum.JumpPower = 0
end)
washingProx.Triggered:Connect(function()
hum:UnequipTools()
washingProx:Destroy()
walk.AnimationId = normalWalk
idle.AnimationId = normalIdle
idle1.AnimationId = normalIdle1
Control.Uncontrol(hum)
hrp:WaitForChild(“Running”).SoundId = cartoonFootsteps
hrp:WaitForChild(“Running”).PlaybackSpeed = 1
workspace:WaitForChild(“WashingMachine”):WaitForChild(“proxPart”):WaitForChild(“washingMachine”):Play()
wait(0.2)
Control.Control(hum)
game.SoundService[“heavy long scream”]:Stop()
game.SoundService[“The Entertainer (a)”]:Play()
objective.Objective.Text = “Ask father if you do your essay”
askDad.Enabled = true
wait(3)
workspace:WaitForChild(“WashingMachine”):WaitForChild(“proxPart”):WaitForChild(“washingMachine”):Stop()
end)
askDad.Triggered:Connect(function()
game.SoundService[“The Entertainer (a)”]:Stop()
game.SoundService[“Peculiar Clock”]:Play()
event:FireServer(true)
if Time == 0 then
dhp.CFrame = CFrame.lookAt(dhp.Position, hrp.Position)
askDad.Enabled = false
Time += 1
Control.Uncontrol(hum)
cam.CameraType = Enum.CameraType.Scriptable
dialogue.Visible = true
objective.Visible = false
skip.Visible = true
cam.CFrame = SCam.CFrame
hrp.CFrame = tpPart.CFrame
dialogue.Dialogue.Text = "Father! Can I please do my essay, I know I haven't done anything around the house today, but that's just because I've been so busy with school"
skip.MouseButton1Click:Connect(function()
if skipTime == 0 then
skipTime += 1
cam.CFrame = DCam.CFrame
dialogue.Dialogue.Text = "Well, now that I think abou-, NO!"
elseif skipTime == 1 then
skipTime += 1
dialogue.Dialogue.Text = "You know I can't let you do your essay yet, I need help around the house! It's been hard since your brother passed. Go do the laundry!"
elseif skipTime == 2 then
dialogue.Dialogue.Text = "Ahh, I get it.."
cam.CFrame = SCam.CFrame
skipTime += 1
elseif skipTime == 3 then
dialogue.Dialogue.Text = "(Ugh! He's always talking about my brother, I haven't even met him! I bet he's allowed to do his essays..)"
skipTime += 1
elseif skipTime == 4 then
dialogue.Visible = false
cam.CameraType = Enum.CameraType.Custom
Control.Control(hum)
skip.Visible = false
objective.Visible = true
objective.Objective.Text = "Do the laundry"
LaundryProx.Enabled = true
skipTime += 1
game.SoundService["Peculiar Clock"]:Stop()
game.SoundService["The Entertainer (a)"]:Play()
event:FireServer(false)
end
end)
elseif Time == 1 then
dhp.CFrame = CFrame.lookAt(dhp.Position, hrp.Position)
askDad.Enabled = false
Time += 1
Control.Uncontrol(hum)
cam.CameraType = Enum.CameraType.Scriptable
dialogue.Visible = true
objective.Visible = false
skip.Visible = true
cam.CFrame = SCam.CFrame
hrp.CFrame = tpPart.CFrame
dialogue.Dialogue.Text = "Hello father! May I please do my essay as I have finished doing the laundry?"
skip.MouseButton1Click:Connect(function()
if skipTime1 == 0 then
skipTime1 += 1
cam.CFrame = DCam.CFrame
dialogue.Dialogue.Text = "Like I said son, in the real world, you don't get let off when you need to do a little something, you should be thanking me for training you."
elseif skipTime1 == 1 then
skipTime1 += 1
cam.CFrame = SCam.CFrame
dialogue.Dialogue.Text = "BUT I DONT NEED TO DO A LITTLE SOMETHING, I NEED TO DO THE BIGGEST ESSAY EVER !"
elseif skipTime1 == 2 then
cam.CFrame = DCam.CFrame
skipTime1 += 1
dialogue.Dialogue.Text = "If it really was the biggest essay ever, you'd be disobeying me!"
elseif skipTime1 == 3 then
dialogue.Dialogue.Text = "Go and wash up the plates"
skipTime1 += 1
elseif skipTime1 == 4 then
cam.CFrame = SCam.CFrame
skipTime1 += 1
dialogue.Dialogue.Text = "(I need to go wash these plates quickly, I NEED to do my essay!)"
elseif skipTime1 == 5 then
skipTime1 += 1
cam.CameraType = Enum.CameraType.Custom
Control.Control(hum)
game.SoundService["Peculiar Clock"]:Stop()
game.SoundService["The Entertainer (a)"]:Play()
event:FireServer(false)
objective.Visible = true
dialogue.Visible = false
objective.Objective.Text = "Wash up the plates"
skip.Visible = false
tapProx.Enabled = true
end
end)
elseif Time == 2 then
dhp.CFrame = CFrame.lookAt(dhp.Position, hrp.Position)
askDad.Enabled = false
Time += 1
Control.Uncontrol(hum)
cam.CameraType = Enum.CameraType.Scriptable
dialogue.Visible = true
objective.Visible = false
skip.Visible = true
cam.CFrame = SCam.CFrame
hrp.CFrame = tpPart.CFrame
dialogue.Dialogue.Text = "I have finished washing the plates, they are the shiniest objects I have ever observed. May I do my essay?"
skip.MouseButton1Click:Connect(function()
if skipTime2 == 0 then
skipTime2 += 1
cam.CFrame = DCam.CFrame
dialogue.Dialogue.Text = "Hmm, there is a still a few things that you have to do, but then you can do the essay"
elseif skipTime2 == 1 then
cam.CFrame = SCam.CFrame
skipTime2 += 1
dialogue.Dialogue.Text = "Eh, to be honest, this doesn't sound like a completely bad idea to me.."
elseif skipTime2 == 2 then
cam.CFrame = DCam.CFrame
skipTime2 += 1
dialogue.Dialogue.Text = "Well then, go ahead and take out the trash"
elseif skipTime2 == 3 then
skipTime2 += 1
cam.CameraType = Enum.CameraType.Custom
dialogue.Visible = false
objective.Visible = true
skip.Visible = false
game.SoundService["Peculiar Clock"]:Stop()
game.SoundService["The Entertainer (a)"]:Play()
event:FireServer(false)
objective.Objective.Text = "Take out the trash"
Control.Control(hum)
trashProx.Enabled = true
end
end)
end
end)
It is trashProx.Triggered [---------------------]
I think I found the cause of the problem: When equipping a Tool within a LocalScript using Humanoid:EquipTool
nothing seems to actually happen but when doing so within a server Script it works but only if the Tool is inside of workspace, not ReplicatedStorage
But if the tool is in workspace, then using equiptool with the local script works, right? It just can’t be anchored before hand, but instead cancollide true so it doesn’t fall into the void
I should have worded that reply better but what I meant was using the Humanoid:EquipTool
function in a LocalScript doesn’t seem to actually do anything in the testing I did, it only worked when used inside of a server Script and the Tool was inside of workspace. I mentioned ReplicatedStorage because during testing I also tried storing the Tool inside of it but the function still didn’t work
Yes, I get that but it’s looks like you’re saying equipping it in a local script doesn’t work whatsoever, it works for me but the tool has to be in the workspace and can’t be anchored at all when the game starts
My bad, I accidentally left the server script enabled and it was interfering with the LocalScript’s result. Humanoid:EquipTool
does work inside of LocalScripts so the issue is something else
I got good news actually because I’ve found a way to perfectly replicate the issue you’re experiencing, I’ll see if I can find a way to fix this