If you press backspace while having a tool inside your character, it will put that tool inside player.Backpack:
This clashes with my, and I think anyone’s, custom unequip system. This would typically also be tied to a custom backpack and inventory system so it clashes (breaks) that too. More importantly, pressing backspace to do this is not intentional in my case, so I think it should be fixed. It’s like making “F” the a hotkey for ‘Reset Character’, any unintentional functions like this should be able to be removed, unless you’re the Esc Menu.
May this be fixed? Or is there a way already to have this not happen? I just want backspace to not do this.
EDIT: REPRO Provided,
Enter the place (via download + open file, or visit the link)
Equip the Block tool (press 1)
Press backspace, it will put it back into backpack (which is what I don’t want happening)
All tools have CanBeDropped set to false, normally backspace drops any tool equipped, maybe backspace is putting them into backpack as a replacement.
A temporary “hacky” fix is this localscript inside StarterPack, but I really like this suggestion.
The waits are necessary unless you want re-parenting errors
local sp = script.Parent
for _, obj in pairs(sp:children()) do
if obj.ClassName == "Tool" then
wait()
obj.Parent = game.Players.LocalPlayer.Character
end
end
sp.ChildAdded:connect(function(child)
if child.ClassName == "Tool" then
wait()
child.Parent = game.Players.LocalPlayer.Character
end
end)
Hey, bringing back this bug report, it’s still impacting and ruins many players experiences. If someone presses backspace: it puts whatever tool they have in their character into their Backpack, which clashes with my backpack system and prevents the player from using that tool again.
But more importantly, if I want “Backspace” to do nothing, shouldn’t I be able to have that as a developer? Shouldn’t I be able to key-bind?! A fix for this would be a “BackspaceDoNothing” property on Tools (that when true, pressing Backspace does nothing!)
The workaround if this goes by unaddressed: (oh boy…) Since any brick inside a character isn’t seen while in FPV, and we want the player to see what they’re holding when in FPV, we need to make a separate model in workspace where all the tools will go to. Each tool would have an ObjectValue denoting which player that tool belongs to for referential work necessary by any outside code. Along with the system changes required for that new tool-arrangement to work…
…as opposed to a BackspaceDoNothing property or ROBLOX letting us keybind :3 OR a property on a Model that lets the player see that model while in FPV =O
its honestly pretty sad thats its been so much time literally so many years and this bug still hasnt been fixed, although i know how to do it now there are people who dont and will want this, if the setting CanBeDropped is false then this function shouldnt fire, such an easy fix for roblox to do yet they dont
I came across this issue as well just yesterday actually, reworking the tools system in my game. The only thing I was able to do is just take advantage of it and re-use tools. Yet, this is not convenient for a lot of people and many probably do not want to re-use. Add the ability to disable this feature by maybe a property in tools?
Proposed Solution:
Tool.Destination = Backpack → (When CanBeDroppped is set to false then it checks this property)
You set it, to nil and then the tool doesn’t go anywhere when you press Backspace. If you choose another Instance, then the tool parents to that location when Back Space gets pressed. That way people can give it another use.
OR
Tool.OnDropped = nil → (When CanBeDropped is set to false then this callback gets called)
This Callback gets called and then the player does whatever with it, if the Callback doesn’t exist then parent it to Backpack.
OR
Tool.ToBackpack = true → (When CanBeDroppped is set to false then it checks this property)
This property is checked and if it’s true it goes to Backpack, else it maintains the tool where it is.
Something I came across with the Backpack folder is that this one completely deletes itself when the player dies instead of just clearing the content inside. Really inconvenient when having connections like ChildAdded and ChildRemoved to detect when tools get added and removed.