How to make simple vehicle move up and down with Q and E

Script:

seat = script.Parent
velocity = seat.BodyVelocity
bg = seat.BodyAngularVelocity

local ls = nil

seat:GetPropertyChangedSignal("Occupant"):Connect(function()
	if seat.Occupant ~= nil then
		if not ls then
			ls = script.LocalScript:Clone()
			ls.Parent = seat.Occupant.Parent
		else
			ls:Destroy()
		end
	else
		if ls then
			ls:Destroy()
		end
	end
end)

while wait() do
	if seat.Throttle == 1 then
		velocity.velocity = seat.CFrame.lookVector * 30
	end
	if seat.Throttle == 0 then
		velocity.velocity = seat.CFrame.lookVector * 0
	end
	if seat.Throttle == -1 then
		velocity.velocity = seat.CFrame.lookVector * -30
	end
	
	if seat.Steer == 1 then
		bg.angularvelocity = Vector3.new(0,-1,0)
	end
	if seat.Steer == 0 then
		bg.angularvelocity = Vector3.new(0,0,0)
	end
	if seat.Steer == -1 then
		bg.angularvelocity = Vector3.new(0,1,0)  
	end 
end

LocalScript:

local uis = game:GetService("UserInputService")

uis.InputBegan:Connect(function(key,chat)
	if not chat and key == Enum.KeyCode.Q then
		script.Value.Value.Velocity = script.Value.Value.Parent.CFrame.Y * 30
	end
end)

uis.InputBegan:Connect(function(key)
	if key == Enum.KeyCode.E then
		script.Value.Value.Velocity = script.Value.Value.Parent.CFrame.Y * -30
	end
end)

(The value is the BodyVelocity)

Problem: The Q/E Up/Down thing isnt working

That’s because it always resets your velocity with the one from the server.

How can i fix this? ----------

Use seat.Changed:Wait() instead of wait().

I still can’t use the Q and E keys to move down and up.