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

Function hits a nil stuff from GetChildren(). Solution?

Asked by
d512634 10
10 years ago

I was hoping that the script is for being convenient to update without editing it. But I hit a problem.

Well, here's the whole script. Read the green sentences inside

local buttons = script.Parent
local maxpage = math.ceil(#game.ReplicatedStorage.Morphs:GetChildren()/10)
local pagetag = buttons.Pages

local zero = buttons["0"]
local one = buttons["1"]
local two = buttons["2"]
local three = buttons["3"]
local four = buttons["4"]
local five = buttons["5"]
local six = buttons["6"]
local seven = buttons["7"]
local eight = buttons["8"]
local nine = buttons["9"]

function Page_Flipped(Value) --this is where the problem is

    function Change_Text(button,text) --I wish to fix the problem right in this function but
        if text ~= nil then -----------------------find a way
            button.Text = text
        elseif text == nil then
            button.Text = "--"
        end
    end 

    morphs = game.ReplicatedStorage.Morphs:GetChildren()

    pagetag.Text = Value.."/"..maxpage

    Change_Text(zero,morphs[1 + 10*(Value-1)].Name)--it stucks right in these
    Change_Text(one,morphs[2 + 10*(Value-1)].Name)--when it hits a nil value, the whole thing
    Change_Text(two,morphs[3 + 10*(Value-1)].Name)--stucks
    Change_Text(three,morphs[4 + 10*(Value-1)].Name)
    Change_Text(four,morphs[5 + 10*(Value-1)].Name)
    Change_Text(five,morphs[6 + 10*(Value-1)].Name)
    Change_Text(six,morphs[7 + 10*(Value-1)].Name)
    Change_Text(seven,morphs[8 + 10*(Value-1)].Name)
    Change_Text(eight,morphs[9 + 10*(Value-1)].Name)
    Change_Text(nine,morphs[10 + 10*(Value-1)].Name)
end

function PlayerAdded()--flip the race menu to 1 when player joined--never mind the rest
    script.Parent.Page.Value = 1
end

for i,v in pairs(buttons:GetChildren()) do --All the buttons
    if v.ClassName == "TextButton" then
        v.MouseButton1Click:connect(function()
            if v.Name == "Next" then
                if script.Parent.Page.Value == maxpage then
                    script.Parent.Page.Value = 1
                else script.Parent.Page.Value = script.Parent.Page.Value + 1
                end
            elseif v.Name == "Previous" then
                if script.Parent.Page.Value == 1 then
                    script.Parent.Page.Value = maxpage
                else script.Parent.Page.Value = script.Parent.Page.Value - 1
                end
            elseif v.Name ~= "Next" and v.Name ~= "Previous" and v.Name ~= "--" then
                script.Parent.Parent.Class.Visible = true
                script.Parent.Parent.Class.Genre.Value = v.Text
                script.Parent.Visible = false
            end
        end)
    end
end

script.Parent.Page.Changed:connect(Page_Flipped)
game.Players.PlayerAdded:connect(PlayerAdded)

for _, player in pairs(game.Players:GetPlayers()) do PlayerAdded(player) end

Answer this question