
give()
******


FUNKTION
========

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


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

   /std/living/put_and_get.c


ARGUMENTE
=========

   object o
       Das Objekt, das uebergeben werden soll.
   object dest
       Der Spieler oder NPC, der das Objekt bekommen soll.
   mixed msg
       Eine optionale Meldung, die anstelle von P_GIVE_MSG oder der
       Standardmeldung verwendet wird, oder -1, um die Meldung zu
       unterdruecken.


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

   Der Spieler oder NPC uebergibt dem Empfaenger das Objekt. Gibt o->move()
   keinen positiven Wert zurueck, beispielsweise weil das Objekt verflucht
   ist oder der Empfaenger es nicht mehr tragen kann, bekommt er eine
   entsprechende Fehlermeldung.


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

   Wenn die Uebergabe geklappt hat, 1, ansonsten 0.


BEMERKUNG
=========

   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt
   weitergeben 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 der Spieler/NPC der Objekt ueberhaupt hat,
   das muss man ggf. selbst ermitteln.


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

   move(L), P_GIVE_MSG, give_objects(L), give_notify(L),
   P_NOINSERT_MSG, P_NOLEAVE_MSG, P_TOO_MANY_MSG,
   P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NODROP

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