Still have questions? Join our Discord server and get real time help.
1

# What does this error mean?

JJ_B 250
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 1246 — 3y
0
Where is the script located, and what is 'p'? dyler3 1473 — 3y
0
I tested this to make sure, and it works fine. You sure this is the right line? Perci1 4905 — 3y
1
I'll give the whole script if you want. JJ_B 250 — 3y
0
Yea, that'd help. I tested also, and it worked perfectly. dyler3 1473 — 3y
1
Edited accordingly. JJ_B 250 — 3y
1
Thanks so much dude, you hit me up to 200 rep :D dyler3 1473 — 3y

1
dyler3 1473
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)