Hi everyone, I just started using module scripts and I've gotten pretty far with it, but I have a problem with using return.
part of the function that uses return:
local selectRoute = function(train, model) local route = train.PrimaryPart.Values.RouteValue.Value local given = model:FindFirstChild("GivenPath") local greenLitPaths = {} local yellowLitPaths = {} --------omitted many lines of code local function findBestPath() searchPathOptions() if #greenLitPaths == 1 then local array = greenLitPaths[1] print(array[1]) return array[1] elseif #greenLitPaths > 1 then sort(greenLitPaths) local array = greenLitPaths[1] print(array[1]) return array[1] elseif #greenLitPaths < 1 then if #yellowLitPaths == 1 then local array = yellowLitPaths[1] print(array[1]) return array[1] elseif #yellowLitPaths > 1 then sort(yellowLitPaths) local array = yellowLitPaths[1] print(array[1]) return array[1] end end resetTables() end if given ~= nil then if given.Values.BlockingTrain.Value == nil then findBestPath() end else findBestPath() end end
function that uses selectRoute:
module.initiateChoice = function(train, model) local chooseRoute = selectRoute(train, model) print(chooseRoute) repeat wait() until chooseRoute ~= nil local affected = chooseRoute:FindFirstChild("AffectedPaths") local light = model.Values.Light.Value local status = model.Values.Status status.Value = chooseRoute.Values.Status.Value switchMod.setSwitches(chooseRoute.Switches) light.TrackDisplay.SurfaceGui.TextLabel.Text = chooseRoute.Values.ToTrack.Value module.exist(affected, function(object) module.alertAffected(train, object) end) end
I noticed that selectRoute prints an existing object when it's called, but printing chooseRoute puts "nil" in the output. Unless I'm mistaken, these are the exact same things, but they have different outputs. Can someone explain this?
By the way, I know it's super long, but if I can solve this problem then I will make a huge step towards completing my concept.