Basically, I have 6 buttons where if you click and meet a certain requirement, they’ll turn from red to green, after they all turn to green, an Orb and the 2 PointLights inside of it should turn from the color red to green, but for some reason when all the 6 buttons are clicked nothing happens? Nothing appears in output either, how do I fix this?
ServerScript in ServerScriptService:
local Orb = game.Workspace.PortalArea.Orb
local OrbLight1 = game.Workspace.PortalArea.Orb.PointLight
local OrbLight2 = game.Workspace.PortalArea.Orb.PointLight2
local Lights = workspace:WaitForChild("Lights"):GetChildren()
local ColorGreen = Color3.fromRGB(0, 255, 0)
local BottomLight = game.Workspace.PortalArea.OrbBottomLight
Lights:GetPropertyChangedSignal("Color"):Connect(function()
if Lights.Color ~= ColorGreen then
Orb.Color = ColorGreen
OrbLight1.Color = ColorGreen
OrbLight2.Color = ColorGreen
end
end)
Lights is a table of instances.
You have to go trough them with a for loop like
local greenLights = {}
for _, light in pairs(Lights) do
if light.Color ~= ColorGreen then
table.insert(greenLights, light)
end
end
if #greenLights == #Lights then
-- all are green
Orb.Color = ColorGreen
OrbLight1.Color = ColorGreen
OrbLight2.Color = ColorGreen
end
for i, light in pairs(Lights) do
light:GetPropertyChangedSignal("Color"):Connect(function()
local greenLights = {}
for _, light in pairs(Lights) do
if light.Color ~= ColorGreen then
table.insert(greenLights, light)
end
end
if #greenLights == #Lights then
-- all are green
Orb.Color = ColorGreen
OrbLight1.Color = ColorGreen
OrbLight2.Color = ColorGreen
end
end)
end
Just to clear some things up, these are under workspace:
Folder containing Orb and it’s PointLights:
Folder containing the Lights (buttons):
Current script used:
local Orb = game.Workspace.PortalArea.Orb
local OrbLight1 = game.Workspace.PortalArea.Orb.PointLight
local OrbLight2 = game.Workspace.PortalArea.Orb.PointLight2
local Bottom = game.Workspace.PortalArea.OrbBottomLight
local Lights = workspace:WaitForChild("Lights"):GetChildren()
local ColorGreen = Color3.fromRGB(0, 255, 0)
local BottomLight = game.Workspace.PortalArea.OrbBottomLight
for i, light in pairs(Lights) do
light:GetPropertyChangedSignal("Color"):Connect(function()
local greenLights = {}
for _, light in pairs(Lights) do
if light.Color ~= ColorGreen then
table.insert(greenLights, light)
end
end
if #greenLights == #Lights then
-- all are green
Orb.Color = ColorGreen
OrbLight1.Color = ColorGreen
OrbLight2.Color = ColorGreen
Bottom.Color = ColorGreen
end
end)
end
local Orb = game.Workspace.PortalArea.Orb
local OrbLight1 = game.Workspace.PortalArea.Orb.PointLight
local OrbLight2 = game.Workspace.PortalArea.Orb.PointLight2
local Bottom = game.Workspace.PortalArea.OrbBottomLight
local Lights = workspace:WaitForChild("Lights"):GetChildren()
local ColorGreen = Color3.fromRGB(0, 255, 0)
local BottomLight = game.Workspace.PortalArea.OrbBottomLight
for i, light in pairs(Lights) do
light:GetPropertyChangedSignal("Color"):Connect(function()
local greenLights = {}
for _, light in pairs(Lights) do
if light.Color == ColorGreen then
table.insert(greenLights, light)
end
end
if #greenLights == #Lights then
-- all are green
Orb.Color = ColorGreen
OrbLight1.Color = ColorGreen
OrbLight2.Color = ColorGreen
Bottom.Color = ColorGreen
end
end)
end
I made a mistake, I checked if it wasn’t green with ~= instead of using == and checking if it is equal to green.
This should work.