Not unequipping item and using another one, it’s switching. Just to make it clear
for _,child in next, tool:GetChildren() do
child.Changed:Connect(function()
print("a")
end)
end
I checked whether the tool parent’s change with this code, of course it’s not effective and is unreliable because this is the result :
FYI : This is in a while loop because I need to keep checking if the parent changed. Don’t know how am gonna do it. Another thing is tool = ch:FindFirstChildWhichIsA("Tool") If you have any more advanced/better way to check if player is holding any tool, please let me know
Can someone please help me? I’ve asked this question 2 times in the forum already but no help so far… Am new to roblox API so please help me and If you could. Please explain what the code did.
Hey, So I see some mistakes that may cause that problem, I won’t go into the deep details.
The code you provided is connecting to the Changed event of every child of the tool. This means that any change in any property of any child of the tool will trigger the event. This is why you’re seeing so many prints.
Instead, you should be checking for changes in the Parent property of the tool itself, not its children.
The method you’re using (FindFirstChildWhichIsA("Tool") ) is a good way to check if a player’s character has a tool. However, to determine if they’re holding it, you’d typically check if the tool’s parent is the character’s Humanoid or Backpack. so the code should look like this:
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local function toolEquipped(tool)
if tool.Parent == character then
print("Tool equipped!")
end
end
character.ChildAdded:Connect(function(child)
if child:IsA("Tool") then
toolEquipped(child)
child:GetPropertyChangedSignal("Parent"):Connect(function()
toolEquipped(child)
end)
end
end)
for _, tool in pairs(character:GetChildren()) do
if tool:IsA("Tool") then
tool:GetPropertyChangedSignal("Parent"):Connect(function()
toolEquipped(tool)
end)
end
end
I have not tested It, I just typed It here but let me know If It does not work.
character.ChildAdded:Connect(function(child)
if child:IsA("Tool") then
toolEquipped(child)
child:GetPropertyChangedSignal("Parent"):Connect(function()
toolEquipped(child)
end)
end
end)
and
for _, tool in pairs(character:GetChildren()) do
if tool:IsA("Tool") then
tool:GetPropertyChangedSignal("Parent"):Connect(function()
toolEquipped(tool)
end)
end
end
The first code applies to each new child that was added to the character, the second code applies to existing childs in the character and will not apply on new ones unless you run it frequently
They work best together if you want to detect every single tool that was added to the character