I use blunt good natured comments.
We once had one friend who would pay his portion of lunch based on the menu price. He would order very little and the rest of use usually tipped generously so we didn't notice at first. Once I noticed, I had no problem picking up what he put down and telling him to add tax and tip. He whined that he didn't believe in tipping and I told him to get his own bill next time, because we did believe in tipping and we weren't covering him and besides he HADN'T even covered the tax. He was abashed enough to start paying his proper amount.
I am quite generous. I host a lot more than my friends (mainly due to where I am in life) but I have zero problem ditching someone from an invite list or calling them out on bad behaviour. I am friendly. I am open with my hosting. I love to have people come over and have a good time, but when I organise or host an event, I expect them to abide by the terms of the invite or not attend. I find that having a wide enough social net means you have no reason to put up with people who are rude or annoying or selfish.
edit: I note that I don't really list any tricks. I think my "trick" is that I know that shutting down a rude request is not rude. Also I don't want everyone to like me. I want people with certain qualities to like me. So if someone were to get mad at me for not donating to their charity I don't agree with or not buying them a nice enough gift, I don't see this as a problem, I see this as a benefit. I simply do not want to be friends with them either.