No it's not good.
- add < and > on your includes
- Ham_TakeDamage registers something that takes damage, weapons can't take damage, they deal damage... hook Ham_Weapon_PrimaryAttack and Ham_Weapon_SecondaryAttack.
- learn to indent your code
- you have too high values on your punchangle and you don't need to set the roll angle either... you can also use negative values, and I think a negative value is required to punch angle up. - stop asking if code is good, just test it !