
put()
*****


FUNKTION
========

   public varargs int put(object o, object dest, mixed msg);


DEFINIERT IN
============

   /std/living/put_and_get.c


ARGUMENTE
=========

   object o
       Das Objekt, das irgendwo hingesteckt werden soll.
   object dest
       Der Behaelter, in den das Objekt gesteckt werden soll.
   mixed msg
       Eine optionale Meldung, die anstelle von P_PUT_MSG oder der
       Standardmeldung verwendet wird, oder -1, um die Meldung zu
       unterdruecken.


BESCHREIBUNG
============

   Der Spieler oder NPC steckt das Objekt in einen Behaelter. Gibt o->move()
   keinen positiven Wert zurueck, beispielsweise weil er das Objekt nicht
   weggeben darf oder der Behaelter schon voll ist, bekommt er eine
   entsprechende Fehlermeldung.


RUECKGABEWERT
=============

   Wenn das Bewegen geklappt hat, 1, ansonsten 0.


BEMERKUNG
=========

   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt irgendwo
   hinstecken lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.

   Die Funktion prueft nicht, ob sich das Objekt und der Behaelter ueberhaupt
   in der Reichweite des Spielers/NPC befinden, das muss man ggf. selbst
   ermitteln.


SIEHE AUCH
==========

   move(L), P_PUT_MSG, put_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET, P_NODROP

Last modified: Thu Aug 28 22:21:58 2008 by Amynthor
