It looks like a jumbled mess but I am attempting to make a track switch script that relies on a switch state so I can incorperate sensors to automatically align the switch to a train without derailment. Something is not working and I honestly being the amatuer I am, am having issues.
It should switch states upon click but it does not and gives back an error in the output which is foreign to me. Work with me here, I do have learning troubles so if its a simple fix, forgive me.
local Turnout = script.Parent
local SwitchLeftCosmetic = Turnout.SwitchLeft1
local SwitchRightCosmetic = Turnout.SwitchRight1
local SwitchLeftCosmetic2 = Turnout.SwitchLeft2
local SwitchRightCosmetic2 = Turnout.SwitchRight2
local SwitchLeftMech = Turnout.TurnMechanism.TurnoutLeft
local SwitchRIghtMech = Turnout.TurnMechanism.TurnoutRight
local LeftSensor = Turnout.TurnMechanism.LeftCensor
local RightSensor = Turnout.TurnMechanism.RightSensor
local SwitchMechanism = Turnout.TurnoutMech
local ClickDetec = SwitchMechanism.Clicker.ClickDetector
local AlignmentState = Turnout.Value
ClickDetec.MouseClick:Connect(function(BeenClicked)
if AlignmentState.Value == "0" then
for i,v in pairs(SwitchLeftCosmetic:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchRightCosmetic:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchLeftMech:GetChildren()) do
v.CanCollide = true
end
for i,v in pairs(SwitchRIghtMech:GetChildren()) do
v.CanCollide = false
end
SwitchMechanism.State1.CanCollide = false
SwitchMechanism.State1.Transparency = 1
SwitchMechanism.State2.CanCollide = true
SwitchMechanism.State2.Transparency = 0
AlignmentState.Value = "1"
print("SwitchedRight")
elseif AlignmentState.Value == "1" then
for i,v in pairs(SwitchLeftCosmetic:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchRightCosmetic:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchLeftMech:GetChildren()) do
v.CanCollide = false
end
for i,v in pairs(SwitchRIghtMech:GetChildren()) do
v.CanCollide = true
end
SwitchMechanism.State1.CanCollide = true
SwitchMechanism.State1.Transparency = 0
SwitchMechanism.State2.CanCollide = false
SwitchMechanism.State2.Transparency = 1
AlignmentState.Value = "0"
print("SwitchedLeft")
end
script.Parent.TurnoutMech.Clicker.ClickDetector.MouseClick:Connect(BeenClicked)
end)
LeftSensor.Touched:Connect(function(TouchLeft)
if not TouchLeft:FindFirstChild("TrainSensor") then
return
end
if AlignmentState.Value == "0" then
for i,v in pairs(SwitchLeftCosmetic:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchRightCosmetic:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchLeftMech:GetChildren()) do
v.CanCollide = true
end
for i,v in pairs(SwitchRIghtMech:GetChildren()) do
v.CanCollide = false
end
SwitchMechanism.State1.CanCollide = false
SwitchMechanism.State1.Transparency = 1
SwitchMechanism.State2.CanCollide = true
SwitchMechanism.State2.Transparency = 0
AlignmentState.Value = "1"
end
end)
RightSensor.Touched:Connect(function(RightTouch)
if not RightTouch:FindFirstChild("TrainSensor") then
return
end
if AlignmentState.Value == "1" then
for i,v in pairs(SwitchLeftCosmetic:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchRightCosmetic:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = false
v.Transparency = 1
end
for i,v in pairs(SwitchRightCosmetic2:GetChildren()) do
v.CanCollide = true
v.Transparency = 0
end
for i,v in pairs(SwitchLeftMech:GetChildren()) do
v.CanCollide = false
end
for i,v in pairs(SwitchRIghtMech:GetChildren()) do
v.CanCollide = true
end
SwitchMechanism.State1.CanCollide = true
SwitchMechanism.State1.Transparency = 0
SwitchMechanism.State2.CanCollide = false
SwitchMechanism.State2.Transparency = 1
AlignmentState.Value = "0"
print("SwitchedLeft")
end
end)
Any help is appreciated,. I am just heavily uneducated with advanced coding. Thanks for any help in advance.
Side note, somewhat dyslexic