Using a hinge wouldn’t be my approach to making a engine rotate in the first place. I would simply use a angular velocity to make the engine rotate at a constant speed. This way whenever you click the off or on button you can simply change the angular velocity to Vector3.new(0, 0, 0) which is off or Vector3.new(0, 0, 15) which is on.
For the loop found on line 7, the code inside the loop would run 50 times, then end. You can fix it by making it a while loop. I suggest replacing it with while script.Parent.Parent.EngineOn.Visible == false do