
drop_objects()
**************


FUNKTION
========

   public varargs int drop_objects(string str, mixed msg);


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

   /std/living/put_and_get.c


ARGUMENTE
=========

   string str
       Was fallengelassen werden soll.
   mixed msg
       Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
       Standardmeldung verwendet wird, oder -1, um die Meldung zu
       unterdruecken.


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

   Der Spieler oder NPC laesst die in <str> benannten Sachen fallen.
   Kann er ein Objekt nicht fallenlassen, 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 fallengelassen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
   Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.


BEISPIEL
========

   private int cmd_opfern(string str)
   {
       notify_fail("WAS moechtest Du opfern?\n");

       if (!this_player()->drop_objects(str, ({ "Du opferst @WEN2.",
                                                "@WER1 opfert @WENU2.\n" })))
           return 0;

       filter_objects(this_player()->moved_objects(), "remove");
       return 1;
   }


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

   move(L), drop(L), P_DROP_MSG, find_objects(L), moved_objects(L)

Last modified: Fri Jul 25 10:59:37 2008 by Amynthor
