I had one button that was recognized by the script in InstanceAdded() and it printed its name but the event didnt fire when the button was clicked. everything else works except the clicked event.
local collectionservice = game:GetService("CollectionService") local currentports = collectionservice:GetTagged("SellingButton") local player = game.Players.LocalPlayer local gui = player:WaitForChild("PlayerGui") local buildgui = gui:WaitForChild("BuildGui") local buildselect = buildgui:FindFirstChild("SelectBuild") local addobj = game.ReplicatedStorage:WaitForChild("AddObject") local mouse = player:GetMouse() local ThreeDobjects = {} function Input(object) print("input1") print("input2") local clicked = false local function MouseClick() clicked = true end local connection = mouse.MouseButton1Down:Connect(MouseClick) buildselect.Visible = false local objectghost = object:Clone() local ghostchil = objectghost:GetChildren() for i = 1,#ghostchil do ghostchil[i].Transparency = .5 ghostchil[i].CanCollide = false end objectghost.Parent = workspace repeat wait() objectghost:SetPrimaryPartCFrame(mouse.Hit) until clicked == true objectghost:Destroy() addobj:InvokeServer(mouse.Hit,object.Name) end function InstanceAdded(instance2) print(instance2.Name) local instance = instance2.Parent local object = instance:FindFirstChildOfClass("Model") local viewport = {viewinstance = instance,object} instance2.MouseButton1Click:Connect(function() Input(object) end) table.insert(ThreeDobjects,#ThreeDobjects,viewport) end function InstanceRemoved(instance) for i = 1,#ThreeDobjects do if(ThreeDobjects[i].viewinstance == instance)then table.remove(ThreeDobjects,i) end end end for i = 1,#currentports do InstanceAdded(currentports[i]) end collectionservice:GetInstanceAddedSignal("SellingButton"):Connect(InstanceAdded) collectionservice:GetInstanceRemovedSignal("SellingButton"):Connect(InstanceRemoved)