RemoveItem()
************


FUNKTION
========

   void RemoveItem(<string|string*> file);


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

   /std/container/items.c


ARGUMENTE
=========

   file
      String oder Array von Strings mit dem Namen des zu entfernenden
      Objekts.


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

   Das mit AddItem(file) dem Raum hinzugefuegte Objekt wird wieder aus
   der Liste der Objekte entfernt. Wurde bei AddItem() ein Array von
   Dateinamen uebergeben, so muss das selbe Array auch bei
   RemoveItem() uebergeben werden! Falls das Objekt, das durch den
   AddItem()-Aufruf erzeugt wurde, sich noch innerhalb des Objektes
   befindet, an dem RemoveItem() aufgerufen wird, wird es dadurch
   zerstoert.


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

   keiner


BEMERKUNGEN
===========

   RemoveItem() loest im Gegensatz zu AddItem() bei NPCs keine Meldung
   aus, da diese nur zerstoert und nicht bewegt werden. Wird hier eine
   Meldung gewuenscht, muss diese selbst ausgegeben werden.


BEISPIELE
=========

   Ein muellschluckerfreier Laden laesst sich wie folgt erzeugen:

   inherit "/std/laden";
   #include <properties.h>

   protected void create()
   {
     ::create();  // Hier wird u.a. der Muellschlucker erzeugt

     RemoveItem("/obj/entsorg"); // und weg damit!

     SetProp(...);  // und die normale Beschreibung...
   }


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

   AddItem(), /std/room/items.c

Letzte Aenderung: 02.11.2020, Bugfix
