I tested it as well, and it seems that many of the ammo natives do not work correctly on the player (or at all). For instance, SET_PED_AMMO_BY_TYPE has support to remove ammo and calculates the amount to remove properly, only for the actual call to CPedInventory::RemoveAmmo to ignore the request due to a (wrong?) hardcoded parameter. What has worked for me though was 0xB6CFEC32E3742779 aka _REMOVE_AMMO_FROM_PED_BY_TYPE. Calling it like this to remove one ammo from your revolver (RPH syntax):
Game.CallNative(0xB6CFEC32E3742779, Game.LocalPlayer.Character, Game.GetHashKey("AMMO_REVOLVER"), 1, 0x2188E0A3);