Touched not connecting

Yeah, honestly, it’s probably not even worth fixing. Again, once he does fix it, he’ll most likely have event issues regarding whether it connects or not in the future, so honestly he should probably just abandon this and hop on a better solution!

But, that’s just my take. I’m not saying he should, but it’s probably a better alternative altogether to just use a better, more efficient method.

the parts are not moving ,inside a tool or terrain
maybe it is better if i just show what it is for.
https://www.roblox.com/games/6717581217/NEW-Easy-Obby-Acrophobia?refPageId=aa596f34-1720-41e1-95ac-5a34e441a186

the problem could be here it might be returning nil? or have you tested that already?, i see its for an obby game

So, from what I understand, you’re essentially trying to make a kill brick?

Why not instantiate a region3 for each kill brick, have each kill brick non-can collide, and if anything steps into it at any given time, execute the code you’re trying to, (aka kill them?)

Maybe that’d be costly, though… hmmmm… :thinking:

even if it returns nil it should still be a killpart.

the return is only so i can keep track of what part is a killpart.
so i can disconnect it later

Now, what is it that you’re trying to return…?

The instance of which has been touched? Or the connection itself? I’ve been reviewing some of your code, and from what I’m seeing, it kind of looks like you’re trying to return the connection event as a whole. I’m not entirely sure if you’re going to get any expected results by returning just the connection event.

Maybe instead, return the character inside the .Touched connection, then that way, when you return the connection, it’ll maybe return that character as well?

i am returning the connection

Connections[TaggedPart][i] = func(TaggedPart) -- here i store the connection in a table


-- this function disconect the conection in case it is no longer a killpart
CollectionService:GetInstanceRemovedSignal(i):Connect(function(TaggedPart)
		Connections[TaggedPart][i]:disconnect()
		Connections[TaggedPart][i]=nil
	end)

tried this and it worked.?

local CollectionService = game:GetService("CollectionService")
local Connections = {}

local Part = Instance.new("Part") 
Part.Parent = game.Workspace 
CollectionService:AddTag(Part,"Kill")

wait(1)

	local func = require(script.Kill)
	local TaggedParts = CollectionService:GetTagged("Kill")
	
	for _, TaggedPart in pairs(TaggedParts) do
		if Connections[TaggedPart] == nil then
			Connections[TaggedPart] = {}
		end
		Connections[TaggedPart] = func(TaggedPart)
	end

	CollectionService:GetInstanceAddedSignal("Kill"):Connect(function(TaggedPart)
		if Connections[TaggedPart] == nil then
			Connections[TaggedPart] = {}
		end
		Connections[TaggedPart] = func(TaggedPart)
	end)
	CollectionService:GetInstanceRemovedSignal("Kill"):Connect(function(TaggedPart)
		Connections[TaggedPart]:disconnect()
		Connections[TaggedPart]=nil
	end)

local Part = Instance.new("Part") 
Part.Parent = game.Workspace 
CollectionService:AddTag(Part,"Kill")

Maybe you’d have a better, much easier time defining whether it can be active or not by using an external value such as an attribute, or just a boolean instead, so you can re-instantiate it instead of calling to a new connection event, which would just overall take up more memory.

i think i found the issue, it’s the name of the tags. you add “kill” while the wanted name is “Kill”?

Not sure but this worked on my end, i even spawned a part manually on CMD

in top of the collectionservice i do

i=v.Name

if this was the case non of the killparts should have worked

can u share me your script so i can compare it?

Wouldn’t a better way of going about this just be by using a value that’s stored in the parts address instead? Simply put, a boolean you can contain several other values so you don’t have to re-define the connection.

I’m not sure how much a .Touched connection takes up in general (regarding memory), but maybe it’d be a more efficient way to just use a boolean externally instead, so you don’t have to ever call to disconnect, or call to re-connect?

Surely that’s more efficient, is it not?

i basically just replicated yours
image

Code i used

local CollectionService = game:GetService("CollectionService")
local Connections = {}

local Part = Instance.new("Part") 
Part.Parent = game.Workspace 
CollectionService:AddTag(Part,"Kill")

wait(1)

	local func = require(script.Kill)
	local TaggedParts = CollectionService:GetTagged("Kill")
	
	for _, TaggedPart in pairs(TaggedParts) do
		if Connections[TaggedPart] == nil then
			Connections[TaggedPart] = {}
		end
		Connections[TaggedPart] = func(TaggedPart)
	end

	CollectionService:GetInstanceAddedSignal("Kill"):Connect(function(TaggedPart)
		if Connections[TaggedPart] == nil then
			Connections[TaggedPart] = {}
		end
		Connections[TaggedPart] = func(TaggedPart)
	end)
	CollectionService:GetInstanceRemovedSignal("Kill"):Connect(function(TaggedPart)
		Connections[TaggedPart]:disconnect()
		Connections[TaggedPart]=nil
	end)

local Part = Instance.new("Part") 
Part.Parent = game.Workspace 
CollectionService:AddTag(Part,"Kill")

what do you ahve in the module script?

image

image

anyways i think its due to your script listening for “GetTagged(“Kill”)”

while you’re adding the tag “kill”

was reffering to this wasn’t capitalized

CollectionService:AddTag(child,"kill")
1 Like

I see what you’re trying to do now. That makes more sense, I should’ve probably read through this entirely. :sweat_smile:

It looks like @EnigmaticDevil figured out the issue for you, here, though.

My bad!!

1 Like

I was so focused on the other parts I completely overlooked this.
thank you both

2 Likes