Playbackevent is called when a player shoots.
TraceAttack is called when a player shoots to other entity
TakeDamage is called when a player shoots and take damage to other entity
Be careful: TraceAttack and TakeDamage can be called by a plugin using ExecuteHam
You can use Ham_Weapon_PrimaryAttack too. But pay attention about 0 ammo and reloading