Hello! So I'm trying to make a keycard door that opens but when I touch it with my keycard it gives my the error in the title. Here is my code:
local db= false local open = script.Parent.Parent.Open script.Parent.Parent.Trigger.Touched:Connect(function(p) if db == false then db = true if p.Parent:FindFirstChild("Card") ~= nil then if open.Value == false then local f = script.Parent.Parent.Door1.PrimaryPart.CFrame*CFrame.Angles(0,-math.rad(90),0) local f2 = script.Parent.Parent.Door2.PrimaryPart.CFrame*CFrame.Angles(0,math.rad(90),0) for i = 0,1,0.1 do local cfm = script.Parent.Parent.Door1.PrimaryPart.CFrame:lerp(f,i) local cfm2 = script.Parent.Parent.Door2.PrimaryPart.CFrame:lerp(f2,i) script.Parent.Parent.Door1:SetPrimaryPartCFrame(cfm) script.Parent.Parent.Door2:SetPrimaryPartCFrame(cfm2) wait() end open.Value = true wait(3) -- how long does the doors open local f3 = script.Parent.Parent.Door1.PrimaryPart.CFrame*CFrame.Angles(0,math.rad(90),0) local f4 = script.Parent.Parent.Door2.PrimaryPart.CFrame*CFrame.Angles(0,-math.rad(90),0) for i = 0,1,0.1 do local cfm = script.Parent.Parent.Door1.PrimaryPart.CFrame:lerp(f3,i) local cfm2 = script.Parent.Parent.Door2.PrimaryPart.CFrame:lerp(f4,i) script.Parent.Parent.Door1:SetPrimaryPartCFrame(cfm) script.Parent.Parent.Door2:SetPrimaryPartCFrame(cfm2) wait() end open.Value = false end else print("User has no card") end db=false end end)
The error is thrown because you have tried to modify/access the PrimaryPart
of the model. Since there is none, the error says that it is a nil
value (no value).
The error is present in both Door1 and Door2. Make sure they are models, as PrimaryPart'
s are not present in Part
s.
If you want to do it manually, click the empty field next to PrimaryPart
, and then click the part that you want to be it's primarypart.
To do it with a script:
game.Workspace.Model.PrimaryPart = game.Workspace.Model.Part -- made up names & locations