You could use 1 handle per forward and per weapons, this way you wouldn't have to retrieve weapon type.
If you still want to retrieve weapon type, you can use cs_get_weaponid(ent) so you don't need to check classname and use get_weaponid after.
For the owner problem, try weapon offset m_pPlayer (value:41, linuxdiff:4)
For the sound feature, you could according to cvar, emit a sound or play the sound only to player.
Nice plugin idea
__________________