Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why does this return the 'wrong' variables?

Asked by 8 years ago

Ok, so I'm making a tycoon kit and I have a dependency thing so buttons don't appear until all the requirements are met. All the button's parents get set to nil to start with and this is my script for checking the dependencies for each button:

function checkDependancies()
    for i,v in pairs(buttonsData) do
        local Amount = true
        local Speed = true
        local Objects = true
        print(" "..v[2].Name)
        if v["Dependant"] ~= nil then
            if v.Dependant["Income"] ~= nil then
                if v.Dependant.Income["Amount"] ~= nil then
                    if script.Parent.IncomeAmount < v.Dependant.Income.Amount then
                        Amount = false
                        print("IncomeAmount was less than the required") -- When this is printed the Amount variable still appears to be false!
                    else
                        print("IncomeAmount was more than the required")
                    end
                else
                    print("Amount not found")
                end
                if v.Dependant.Income["Speed"] ~= nil then
                    if script.Parent.IncomeSpeed > v.Dependant.Income.Speed then
                        Speed = false
                        print("IncomeSpeed was more than the required") -- When this is printed the Speed variable still appears to be false!
                    else
                        print("IncomeSpeed was less than the required")
                    end
                else
                    print("Speed not found")
                end
            else
                print("Income not found")
            end
            if v.Dependant["Objects"] ~= nil then
                for i1,v1 in pairs(v.Dependant.Objects) do
                    if purchasedObjects:FindFirstChild(v1) == nil then
                        Objects = false
                        print(v1.Name.." not found") -- When this is printed the Objects variable still appears to be false!
                        break
                    else
                        print(v1.Name.." found")
                    end
                end
            else
                print("Objects not found")
            end
        else
            print("Depentant not found")
        end
        print(Amount)
        print(Speed)
        print(Objects)
        if Amount == true and Speed == true and Objects == true then
            v[1].Parent = v[2]
        else
            v[1].Parent = nil
        end
    end
end

This doesn't return what I want it to, I put the prints in there to see what happens. It doesn't give any errors but the output is odd, even when the print that's next to setting the variable to false prints, the variable still appears to be true. I'm not sure why this is, here's my output:

 Owner Door - 500
Income not found
Objects not found
true
true
true
 Increase Income Speed (-1) - 100
Depentant not found
true
true
true
 Increase Income Speed (-1) - 300
Income not found
Objects not found
true
true
true
 Increase Income Amount (+10) - 100
Depentant not found
true
true
true
 Increase Income Amount (+10) - 300
Income not found
Objects not found
true
true
true
 Upgrade Walls - 200
Income not found
Objects not found
true
true
true
 Build Walls - 100
Depentant not found
true
true
true

Answer this question