CAN_PUT_AND_GET(L) NAME can_put_and_get - determine if an object is a container SYNOPSIS int can_put_and_get(string str) RETURN VALUE When a player examines an object, the name of the object the player is looking at is passed to can_put_and_get(). If a true value is given, the inventory of the object is printed for the player. A false value means the object is 'opaque'. If no string is passed, it normally means the player is trying to put something into or take something from the object. A true value means this operation is allowed. A false value forbids it. DESCRIPTION This function defines whether an object is a container or not, within the mudlib. In a sense, all objects can be containers, but a this function enables them to act like containers to players, in the sense that it allows players to see what objects are contained by another object, and whether players are allowed to take objects from as well as insert objects into the container object. NOTES It is not enough to define this true if you want a player to be able to insert things in an object or give them to a monster. The local function add_weight() must also return a true value. Containers such as bags will return 1 in all cases. Containers like chests will return 1 when the chest is open, 0 when it is closed. Living objects will return 1 when strings are passed to them, 0 when nothing is passed to can_put_and_get() (you can thus see what a monster is carrying, but you can't take anything away). Sometimes an item will have 'parts' attached to it that are different from the object itself in a logical sense. For instance, a chest and the lid of the chest. When the player looks at the lid, you don't want to print out the inventory of the chest, so you return 0 when anything other than 'chest' is passed to can_put_and_get. This function is automatically defined in living.c, so the strange behavior of why arguments are passed can be ignored most of the time. The id() of the function is checked before can_put_and_get() is called. The descriptions of the inventory are handled in and printed by the player object. EXAMPLES In a chest: int can_put_and_get(string str) { if( str == "lid" ) /* This conditional is of course optional */ return 0; /* And presumably long() prints out special desc. */ return chest_is_open; } SEE ALSO add_weight(L), long(L)
Help topics available:
You are guest number 83 since January 2020.
This file was last modified: June 2000.