For bad cat and smoke smells, sit out shallow bowls of white vinegar with about 1/2 to 1 inch of vinegar in the bottom. It is stinky at first but has a neutralizing effect. This only helps to mask the smell.
To get cat pee out, pour hydrogen peroxide over the spot and wipe up with paper towels over and over until it stops bubbling. (So gross!) Pour, wipe, pour, wipe. Then clean like normal. Doesn't work on carpets obviously.
Cat lady, former smoker.