@XanMag,
Neon didn't say anything about making the extra objects move into the bag. In the interest of science, however, I doodled a bit, and found a little trick:
1. Make your backpack a container.
1-optional. Checkmark "Hide children ..." if you don't want items in the bag to be listed in inventory.
2. Add a function, like "takeinbackpack".
3. Add parameter "object" (w/o quotes) to "takeinbackpack".
4. Add script "If... player is carrying object: object: backpack"
5. "Then: Move object [expression:] object to [object:] backpack"
6. On every takeable object, add script "call function" to "after taking". Call function "takeinbackpack" with parameter as the object's name.
This is only barely workable, though, as I have no idea how to refer to "If... object is full" or whatever, as even making the backpack a limited container doesn't prevent the object from being added to the backpack.
EDIT: Also, this reitroduces the maxobjects problem. If the bag contains too much volume of objects for the player's current maxvolume, it cannot be picked up...
EDIT2: Roundabout fix to said problem:
EDIT3: Perhaps the final solution? still requires a custom attribute, but better than rewriting the whole "take" verb!
Remember to add the new parameter to every takeable object. Ideally, the parameter should be equal to the volume!
Also, to the "remove... from ..." command, add "Set variable object_two.filling = object_two.filling - object_one.volume"