It's not that fine. Now, when I'm on my PC, I can take a look at all of it.
You can't read_data(2) in menu callback?! This is especial data for the CurWeapon event.
As mentioned above, you can (and better) use Ham_ItemDeploy, or you can register CurWeapon only with knife. Look at amxconst.inc to see the index of knife and register in the event parameters (which now are "1=1").
Also, I think that callbacks should be registered with menu_makecallback("MyCallBackFunction"), but I could be wrong here (if your callback is working properly).