pick_objects()
**************


FUNKTION
========

   public varargs int pick_objects(string str, int flag, mixed msg);


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

   /std/living/put_and_get.c


ARGUMENTE
=========

   string str
       Was aufgehoben werden soll.
   int flag
       Muss das Objekt irgendwo drinstecken (flag = 1), oder darf es einfach
       so herumliegen (flag = 0)? Dieses Argument ist hauptsaechlich fuer das
       Kommando "hole" gedacht, in der Regel braucht man es nicht anzugeben.
   mixed msg
       Eine optionale Meldung, die anstelle von P_PICK_MSG oder der
       Standardmeldung verwendet wird, oder -1, um die Meldung zu
       unterdruecken.


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

   Der Spieler oder NPC nimmt die in <str> benannten Sachen. Kann er ein
   Objekt nicht nehmen, bekommt er eine entsprechende Fehlermeldung. Wenn
   keine Objekte auf <str> passen, wird per _notify_fail() eine Meldung
   gesetzt, aber noch nicht ausgegeben.


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

   Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.


BEMERKUNG
=========

   Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
   etwas genommen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
   Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.


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

   move(L), pick(L), P_PICK_MSG, find_objects(L), moved_objects(L)

Last modified: Fri Jul 25 10:58:43 2008 by Amynthor
