I’m not sure what is happening, I’ve recoded it twice. Here is my code:
--// Services
local TweenService = game:GetService("TweenService")
--// Variables
local Model = script.Parent
local Door = Model.Door
local Prompt = Door.ProximityPrompt
local ClosedPosition = Vector3.new(Door.Position.X, Door.Position.Y, Door.Position.Z)
local OpenPosition = Vector3.new(Door.Position.X, Door.Position.Y + Door.Size.Y * 2.1, Door.Position.Z)
--// Settings
local KeycardsList = {
--"SCP:F Level 0",
--"SCP:F Level 1",
--"SCP:F Level 2",
"SCP:F Level 3",
"SCP:F Level 4",
"SCP:F Level 5",
"SCP:F Omni keycard",
}
local Debounce = false
local AnimationTime = 3
local OpenTime = 2
local TweenData = TweenInfo.new(
AnimationTime,
Enum.EasingStyle.Sine,
Enum.EasingDirection.Out,
0,
false,
0
)
--// Main
function OperateDoor()
local CloseGoal = {Position = ClosedPosition} local CloseTween = TweenService:Create(Door, TweenData, CloseGoal) local CloseTween = TweenService:Create(Door, TweenData, CloseGoal)
local OpenGoal = {Position = OpenPosition} local OpenTween = TweenService:Create(Door, TweenData, OpenGoal)
if Debounce == false then Debounce = true
OpenTween:Play()
OpenTween.Completed:Wait()
wait(OpenTime)
CloseTween:Play()
OpenTween.Completed:Wait()
Debounce = false
end
end
Prompt.Triggered:Connect(function(Player)
for _, AcceptedKeycards in pairs(KeycardsList) do
if Player.Backpack:FindFirstChild(AcceptedKeycards) or Player.Character:FindFirstChild(AcceptedKeycards) then
OperateDoor()
end
end
end)