Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Attempt to connect failed, passed value isn't a function?

I'm trying to connect a function when a variable is true and disconnect when you press x

I keep getting this error:

Attempt to connect failed: Passed value is not a function 23:12:22.419 - Script 'Players.Player.PlayerScripts.Placing', Line 19

--//Predefines
local uis = game:GetService("UserInputService")

--//Variables
local Player = game.Players.LocalPlayer
local Character = Player.Character
local Camera = game.Workspace.CurrentCamera
local Database = game.ReplicatedStorage
local Mouse = Player:GetMouse()
local itemGui = Player.PlayerGui.Guis.Items

local currentlyPlacing = false

--//Item placing
function updatePlacingPosition(position)
	print(position)
end

local placing = Mouse.Changed:connect(updatePlacingPosition(Mouse.hit.p))
placing:disconnect()

	--//Item placing buttons
	for i,v in pairs (itemGui:GetChildren()) do
		v.MouseButton1Down:connect(function()
			currentlyPlacing = true
			placing:connect()
		end)
	end
	
	--//Item disconnecting button
	uis.InputBegan:connect(function(input, typing)
		if not typing and input.UserInputType == Enum.UserInputType.Keyboard then
			if input.KeyCode == Enum.KeyCode.X then
				placing:disconnect()
			end
		end
	end)

1 answer

You need to pass connect a function, you're passing it nothing, nil.

To get what you're trying to do create another function

local placing = Mouse.Changed:connect(function() updatePlacingPosition(Mouse.hit.p) end)

Buuuuuttttt the other parts of the script wont work either, if you want something to run only sometimes you can connect it to a loop and have a conditional

local running = true --set this to false and it wont run the function when the event is fired

local placing = Mouse.Changed:connect(function() 
if running then
updatePlacingPosition(Mouse.hit.p)
end
end)

This discussion is preserved as it was. New answers, comments, and votes are closed.