public fwHam_p90rof(ent) set_pdata_float(ent, 46, 0.05)
0.05 is the time between bullets and 46 is the primary offset, 47 is for secondary attack
You shouldn't hook PrimaryAttack unless the offset value get reset after attacking.
Probably hook Ham_Item_Deploy or Ham_Item_AddToPlayer would be the best way.