The rest of the offsets and sigs you have are correct.
You may wanna consider using the netprop CBaseCombatWeapon::m_iPrimaryAmmoType to get the ammo type instead of the virtual function, then you wouldn't need to check the offset after each update.
PHP Code:
new g_iOffs_iPrimaryAmmoType = -1;
public OnPluginStart() { g_iOffs_iPrimaryAmmoType = FindSendPropInfo("CBaseCombatWeapon","m_iPrimaryAmmoType"); }
//I like the above better since it doesn't involve repetitive use of strings, //but you can also do this if you're feeling lazy: GetAmmoType(weapon) { return GetEntProp(weapon,Prop_Send,"m_iPrimaryAmmoType",1); }