Ad
Log in to vote
1

What does this error mean?

Asked by
JJ_B 250 Moderation Voter
3 years ago

When I run one of my scripts, I get this error in the output: "Workspace.BridgeDeck.Bridge.Science/Engineering.Part.Script:13: bad argument #1 to '?' (Vector3 expected, got nil)"

Line 13 of said script is as follows: p.CFrame = p.CFrame + Vector3.new(0,0,10)

Does anyone know why this won't work?

[EDIT] The whole script:

function separate()
if game.Workspace:FindFirstChild("Stardrive")== nil then
    script.Parent.Sound.Pitch = 1
    script.Parent.Sound:play()
    wait(3)
    local s = game.ServerStorage.Stardrive:clone()
    s.Parent = game.Workspace
    game.Workspace.Separated.Value = true
    wait(0.5)
    local p = game.Workspace.Stardrive:GetChildren()
        for i = 1,#p do
        repeat
            p.CFrame = p.CFrame + Vector3.new(0, 0, 10)
            wait(0.5) 
        until
            game.Workspace.Stardrive.Shape.Positon.Z <= 868.946
        end
else
    if game.Workspace:FindFirstChild("Stardrive")~= nil then
        script.Parent.Sound.Pitch = -1
        script.Parent.Sound:Play()
        game.Workspace.Separated.Value = false
        game.Workspace.Stardrive:destroy()
    end
end
end

script.Parent.ClickDetector.MouseClick:connect(separate)

0
http://wiki.roblox.com/index.php/Lua_errors -- check here for lua errors. HungryJaffer 1231 — 3y
0
Where is the script located, and what is 'p'? dyler3 1468 — 3y
0
I tested this to make sure, and it works fine. You sure this is the right line? Perci1 4879 — 3y
1
I'll give the whole script if you want. JJ_B 250 — 3y
View all comments (3 more)
0
Yea, that'd help. I tested also, and it worked perfectly. dyler3 1468 — 3y
1
Edited accordingly. JJ_B 250 — 3y
1
Thanks so much dude, you hit me up to 200 rep :D dyler3 1468 — 3y

1 answer

Log in to vote
1
Answered by
dyler3 1468 Moderation Voter
3 years ago

Oh, you're problem is that you're trying to index a table. You can't do that, you need to iterate through each object in the table instead. An example is here:

p=game.Workspace:GetChildren()
for i,v in pairs(p) do --Creates a loop that iterates through each value in the table.
    if v:IsA("BasePart") then
        v.CFrame = v.CFrame + Vector3.new(0, 0, 10)
    end
end

So there's an example. To apply this to your script, we will keep everything else the same, and fix up your loop:

function separate()
if game.Workspace:FindFirstChild("Stardrive")== nil then
    script.Parent.Sound.Pitch = 1
    script.Parent.Sound:play()
    wait(3)
    local s = game.ServerStorage.Stardrive:clone()
    s.Parent = game.Workspace
    game.Workspace.Separated.Value = true
    wait(0.5)
    local p = game.Workspace.Stardrive:GetChildren()
    repeat --Moved this outside of the 'for' loop. It would make each part move one at a time if not.
        wait(0.5) 
        for i,v in pairs(p) do
            v.CFrame = v.CFrame + Vector3.new(0, 0, 10) --Index's the value in the table
        end
    until  game.Workspace.Stardrive.Shape.Positon.Z <= 868.946
else
    if game.Workspace:FindFirstChild("Stardrive")~= nil then
        script.Parent.Sound.Pitch = -1
        script.Parent.Sound:Play()
        game.Workspace.Separated.Value = false
        game.Workspace.Stardrive:destroy()
    end
end
end

script.Parent.ClickDetector.MouseClick:connect(separate)

Ok, so now your code should work correctly. If you have any further problems/questions, please leave a comment below. Hope I helped :P

-Dyler3

0
Sorry, I made a mistake. Give me a minute to update this. dyler3 1468 — 3y
0
Assuming that he wants all the parts to be moved at once, you have to switch the for and repeat. 'repeat for (stuff) end until condition' Perci1 4879 — 3y
0
Yup, I caught that, Already was fixing it :P Thanks tho dyler3 1468 — 3y
0
No errors as such, but the actual model doesn't move :-/ JJ_B 250 — 3y
Ad

Answer this question