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

Why am I having function issues?

This script is simply supposed to turn on the lights when a switch is pressed, and turn them off when its pressed again. No errors appear in output.

local L11 = script.Parent.Parent.Parent.CeilingLight1.Light1
local L12 = script.Parent.Parent.Parent.CeilingLight1.Light2
local L13 = script.Parent.Parent.Parent.CeilingLight1.Light3
local L21 = script.Parent.Parent.Parent.CeilingLight2.Light1
local L22 = script.Parent.Parent.Parent.CeilingLight2.Light2
local L23 = script.Parent.Parent.Parent.CeilingLight2.Light3
local L31 = script.Parent.Parent.Parent.CeilingLight3.Light1
local L32 = script.Parent.Parent.Parent.CeilingLight3.Light2
local L33 = script.Parent.Parent.Parent.CeilingLight3.Light3

function buttonPressed()
	if script.Parent.Parent.On.Value == true then
		turnOn()
	else
		turnOff()
	end
end

function turnOn()
	script.Parent.Parent.On.Value = true
	script.Parent.Rotation = Vector3.new(0, 0, 12.5)
	local L11 = script.Parent.Parent.Parent.CeilingLight1.Light1
	local L12 = script.Parent.Parent.Parent.CeilingLight1.Light2
	local L13 = script.Parent.Parent.Parent.CeilingLight1.Light3
	local L21 = script.Parent.Parent.Parent.CeilingLight2.Light1
	local L22 = script.Parent.Parent.Parent.CeilingLight2.Light2
	local L23 = script.Parent.Parent.Parent.CeilingLight2.Light3
	local L31 = script.Parent.Parent.Parent.CeilingLight3.Light1
	local L32 = script.Parent.Parent.Parent.CeilingLight3.Light2
	local L33 = script.Parent.Parent.Parent.CeilingLight3.Light3
	L11.BrickColor = BrickColor.White()
	L12.BrickColor = BrickColor.White()
	L13.BrickColor = BrickColor.White()
	L21.BrickColor = BrickColor.White()
	L22.BrickColor = BrickColor.White()
	L23.BrickColor = BrickColor.White()
	L31.BrickColor = BrickColor.White()
	L32.BrickColor = BrickColor.White()
	L33.BrickColor = BrickColor.White()
	
	L11.Material = "Neon"
	L12.Material = "Neon"
	L13.Material = "Neon"
	L21.Material = "Neon"
	L22.Material = "Neon"
	L23.Material = "Neon"
	L31.Material = "Neon"
	L32.Material = "Neon"
	L33.Material = "Neon"
end

function turnOff()
	script.Parent.Parent.On.Value = false
	script.Parent.Rotation = Vector3.new(0, 0, -12.5)
	local L11 = script.Parent.Parent.Parent.CeilingLight1.Light1
	local L12 = script.Parent.Parent.Parent.CeilingLight1.Light2
	local L13 = script.Parent.Parent.Parent.CeilingLight1.Light3
	local L21 = script.Parent.Parent.Parent.CeilingLight2.Light1
	local L22 = script.Parent.Parent.Parent.CeilingLight2.Light2
	local L23 = script.Parent.Parent.Parent.CeilingLight2.Light3
	local L31 = script.Parent.Parent.Parent.CeilingLight3.Light1
	local L32 = script.Parent.Parent.Parent.CeilingLight3.Light2
	local L33 = script.Parent.Parent.Parent.CeilingLight3.Light3
	L11.BrickColor = BrickColor.Gray()
	L12.BrickColor = BrickColor.Gray()
	L13.BrickColor = BrickColor.Gray()
	L21.BrickColor = BrickColor.Gray()
	L22.BrickColor = BrickColor.Gray()
	L23.BrickColor = BrickColor.Gray()
	L31.BrickColor = BrickColor.Gray()
	L32.BrickColor = BrickColor.Gray()
	L33.BrickColor = BrickColor.Gray()
	
	L11.Material = "Plastic"
	L12.Material = "Plastic"
	L13.Material = "Plastic"
	L21.Material = "Plastic"
	L22.Material = "Plastic"
	L23.Material = "Plastic"
	L31.Material = "Plastic"
	L32.Material = "Plastic"
	L33.Material = "Plastic"
end

script.Parent.ClickDetector.MouseClick:connect(buttonPressed)

Thank you in advance for any help you may provide.

2 comments

0

I think you should pu the function buttonPressed() after turnoOn() and turnOff()

0

turnOn() and turnOff() are global functions, so it does not matter in this case. Although I would suggest using locals.

1 answer

Hi, you made this script way to hard :D I made shorter version of it and it works.

--deris88 --make model, insert script in it and part named button (insert click detector into it)
local on = false
local lights = script.Parent.Model:GetChildren() --make a model and add all your lights in it
script.Parent.Button.ClickDetector.MouseClick:connect(function(onoff)
	if on == false then
		script.Parent.Button.Rotation = Vector3.new(0, 0, 12.5)
		on = true
		for i= 1,#lights do
			lights[i].BrickColor = BrickColor.White()
			lights[i].Material = 'Neon'
		end		
	else
		script.Parent.Button.Rotation = Vector3.new(0, 0, -12.5)
		on = false
		for i= 1,#lights do
			lights[i].BrickColor = BrickColor.Gray()
			lights[i].Material = 'Plastic'
		end		
	end
	
end)--done

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