I mean it doesn't return 1 if it is successful and 0 otherwise. Touching a weaponbox in the air is not my intention, but often when I call fake_touch it fails because it's in the air and I want to fix that.
Then simply check if it's on ground before calling fake_touch(pev_flags & FL_ONGROUND).