conceptual post only (we can help you with the actual implementation if you want to do this~it), see if you can at least understand what you want done, in what it entails~requires via this conceptual post of mine:
Containers:
1. the 'player' Player Object ( player.inventory ~ ScopeInventory )
2. the 'schoolbag' Object ( 'take' and 'drop' enabled, closed~open container type, and a 'put~put into' Verb~Command )
you can have specific Verbs for:
1. when the Object is *NOT* in your 'player' Player Object: 'displayverbs' built-in Stringlist Attribute
2. when your Object *IS* in your 'player' Player Object: 'inventoryverbs' built-in Stringlist Attribute
3. #1+2 ( non-specific: the Verb exists for both when in your 'player' Player Object, and when in some other Object )
for example:
'take' is only available when the Object is *NOT* in your 'player' Player Object, and likewise, 'drop' is not available when the Object is *NOT* in your 'player' Player Object. Think of the logic here: 'I can't take what I already have' and 'I can't drop what I don't have', makes sense, right? (I hope, lol).
whereas, 'use' can apply whether the Object is in the 'player' Player Object, or not (it's in some other Object), the logic should make sense (in a general case, anyways): 'I can use an Object whether I have it on me or not'.
when you 'take' Verb~Command an Object from a Room or (inside of) another Object, it puts that Object into your 'player' Player Object.
whereas, you also~then want to put the Object into your 'schoolbag' Object.
and, you also got your additional needed scripting dealing with your 'volume' checks~reqs, too.
All of this stuff is probably going to be a bit (probably too) difficult for you, if you're new to quest, and to coding in general.
what you think was a simple thing to do, is actually a bit more complex than you realized.
--------
but if you want to tackle doing this anyways, let us know and we can help you.
I would recommend leaving 'take' and 'drop' as they normally work, and simply add (or edit) a 'put' Verb for when it is in your inventory (in your 'player' Player Object):
conceptually:
'kitchen' Room Object
-> 'player' Player object
->-> 'schoolbag' Object
-> 'refrigerator' Object
->-> 'sandwich' Object
you 'open' the 'refrigerator'
you 'take' the 'sandwish'
'kitchen' Room Object
-> 'player' Player object
->-> 'sandwich' Object
->-> 'schoolbag' Object
-> 'refrigerator' Object
(now the 'sandwich' has a 'put this:sandwich into #object#:schoolbag ' Verb-Command, due to it being in your player's inventory: in your 'player' Player Object)
you ' put this:sandwich into #object#:schoolbag '
+ the additional scripting in your 'put' Verb~Command, for checking~dealing with the 'volume' req you want.
'kitchen' Room Object
-> 'player' Player object
->-> 'schoolbag' Object
->->-> 'sandwich' Object
-> 'refrigerator' Object
--------------
if this isn't against your intent:
the far easiest way, is to not deal with Objects at all, simply using the 'alteration of Attributes', instead.
though... you're going to have to learn to use Attributes... but this is (hopefully) easier than what you want done above.
for example (in pseodo-code ~ sorry, I'm lazy) ...
instead of having actual individual 'gold coins' Objects, which you move around...
simply give your 'PC~NPC' Objects and~or 'Other' Objects, an Integer Attribute:
player.cash_integer_attribute = 150
shop_keeper.cash_integer_attribute = 1000
wooden_sword.price_integer_attribute = 100
and then we can do scripting for our 'transactions' (such as 'buying' and 'selling' ):
(shortening my Attribute names, so don't have to type as much, and my longer Attribute names above are just to help explain the scenario and what+how stuff is going on~happening~doing)
Buying:
sword.parent = shop_keeper
if (player.cash >= sword.price) {
-> player.cash = player.cash - sword.price
-> shop_keeper.cash = shop_keeper.cash + sword.price
-> sword.parent = player
} else {
-> msg ("Sorry, you don't have enough cash to buy the sword.")
}
Selling:
sword.parent = player
if (shop_keeper.cash >= sword.price) {
-> player.cash = player.cash + sword.price
-> shop_keeper.cash = shop_keeper.cash - sword.price
-> sword.parent = shop_keeper
} else {
-> msg ("Sorry, but the shop keeper can't afford to buy the sword from you.")