Can't detect for tool

The title is pretty self explanitory, but I can’t detect if a tool is added, and nothing is in the output. I want it to print when the player is added and when a tool with the tag “Gun” is equipped

wait(0.1)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FastCast = require(ReplicatedStorage.FastCastRedux)

game.Players.PlayerAdded:Connect(function(Player)
	
	print("added")
	Player.Character.ChildAdded:Connect(function(Child)
		if Child:IsA("Tool") and Child:HasTag("Gun") then
			print("Gun equipped")
		end
	end)
	
end)

I would look into AncestryChanged. As you can put it straight into your gun logic.

1 Like

well im trying to make a singular server script that controls any server side operations for guns, and only a local script in the gun

From what I can see, your using CollectionService, you can just connect the AncestryChanged function when looping through the tools.

Example:

local CollectionService = game:GetService("CollectionService")

local Tags = CollectionService:GetTagged("Gun")

for _, parent in pairs(Tags) do
	parent.AncestryChanged:Connect(function()
		print("The gun changed parents, new parent: "..parent.Parent.Name)
	end)
end

or

local CollectionService = game:GetService("CollectionService")

local Tags = CollectionService:GetTagged("Gun")

for _, parent in pairs(Tags) do
	parent.AncestryChanged:Connect(function()
		local str = string.format("%s has changed parents, new parent is: %s.", parent.Name, parent.Parent.Name)
		
		print(str)
	end)
end

try doing player.characteradded and then putting child added in that

Tried it and nothing was output either

can u show ur script now how it looks like

I’d also like to note that even the Print("Player added") Prints, but does if i remove the child added

wait(0.1)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FastCast = require(ReplicatedStorage.FastCastRedux)

game.Players.PlayerAdded:Connect(function(Player)
	print("Player added")
	
	Player.CharacterAdded:Connect(function(Char)
		Char.ChildAdded:Connect(function(Child)
			if Child:IsA("Tool") then
				print("Tool equipped")
			end
		end)
	end)
	
end)

It’s not printing anything because you added wait(0.1) at the start of the script. When you join the game, the script only detects players who are added after the 0.1-second delay, so it doesn’t print anything.

1 Like

okay so thats annoying but solved thanks

1 Like