I want the vehicle to stop working when the "required" part is disconnected from the rest of the vehicle. I tried doing so by using :FindFirstChild("Weld"), but even if I delete the welds the script continues to move the vehicle. Shouldn't the FindFirstChild return nil when I delete the welds?
--Movement variables.
local move = script.Parent
local partMoving = false
local rotation = 0
local mode = "Forwards"
local movementY
local working = true
--Part required to run.
local required = script.Parent.Parent.Require
--Variables for the buttons.
local downBtn = script.Parent.Parent.Console.Down
local upBtn = script.Parent.Parent.Console.Up
local leftBtn = script.Parent.Parent.Console.Left
local rightBtn = script.Parent.Parent.Console.Right
local modeBtn = script.Parent.Parent.Console.Mode
local ignitionBtn = script.Parent.Parent.Console.Movement
--Sets the movement mode.
modeBtn.ClickDetector.MouseClick:Connect(function()
if not partMoving then
if mode == "Forwards" then
mode = "Reverse"
modeBtn.BrickColor = BrickColor.new("Eggplant")
else
mode = "Forwards"
modeBtn.BrickColor = BrickColor.new("Cyan")
end
end
end)
--Starts or stops movement.
ignitionBtn.ClickDetector.MouseClick:Connect(function()
if not partMoving then
partMoving = true
ignitionBtn.BrickColor = BrickColor.new("Lime green")
else
partMoving = false
ignitionBtn.BrickColor = BrickColor.new("Really red")
end
end)
--Sets the movement rotation
rightBtn.ClickDetector.MouseClick:Connect(function()
rotation = -1
wait(.3)
rotation = 0
end)
leftBtn.ClickDetector.MouseClick:Connect(function()
rotation = 1
wait(.3)
rotation = 0
end)
--Sets vertical movement
upBtn.ClickDetector.MouseClick:Connect(function()
movementY = .5
wait(.4)
movementY = 0
end)
downBtn.ClickDetector.MouseClick:Connect(function()
movementY = -.5
wait(.4)
movementY = 0
end)
--Moves "Move" based on the previously set instructions
---[[
required:WaitForChild("RequiredWeld")
while true do
if script.Parent.Parent.Require:FindFirstChild("RequiredWeld") ~= nil then
if partMoving then
print ("Should be moving!")
if mode == "Forwards" then
move.CFrame = move.CFrame*CFrame.new(0,movementY,-.1) *CFrame.Angles(0,math.rad(rotation),0)
wait (0.001)
else
move.CFrame = move.CFrame*CFrame.new(0,movementY,.1) *CFrame.Angles(0,math.rad(rotation),0)
wait (0.001)
end
else
wait (0.5)
end
else
ignitionBtn.Material = "Glass"
ignitionBtn.ClickDetector:Destroy()
ignitionBtn.BrickColor = BrickColor.new("Maroon")
--[[for i = 0, 10 do
move.CFrame = CFrame.new(0,-.1,0) *CFrame.Angles(math.rad(-1),0,0)
wait (0.001)
end
working = false
while working == false do
wait(.1)
move.CFrame = CFrame.new(0,-.1,0)
end
--]]
end
end
--]]

3 comments
Try moving the part sideways that has the weld and delete it as well
Try doing :ChildRemoved()
Child removed worked, if you add it as an answer I'll accept it.