Always carry cash.
Buy an imaginary pack of cigarets and put the right amount of cash in a jar.
Count how many you smoke and "buy" another pack when you are out.
Every time you want to have a cigaret, look at the jar of cash and count minus one from the pack.
Every 3 months, cash out the jar and buy a firearm.
Trust me it works as long as you DON'T cheat!!!